1

说的有什么区别:

if (abc == "a")
{
// do something here...
return;
}

和上面一样,但是没有 return 关键字?

我是 C# 编码器,我知道 return 关键字后跟一个类型或变量会返回该项目,但在上面的上下文中,return 似乎只是退出代码块,但它是否会对代码进行任何功能或性能更改?

谢谢

4

9 回答 9

13

“return”从函数中退出,而不仅仅是封闭的代码块。因此,如果您的代码块在函数的上下文中,就像这样(我不知道 C#,所以我使用的是 Java 语法):

int thisIsAFunction(int a) {
    if (abc == "a")
    {
        // do something here...
        return 1;
    }
    // do something else here...
}

如果abc == "a"那么“在这里做其他事情”将不会运行。但是如果你删除了if块内的 return 语句,那么它就会运行。

于 2009-02-23T19:14:02.207 回答
3

return语句立即退出函数,因此它可能具有性能优势,因为函数中的以下代码根本不会执行。

于 2009-02-23T19:14:18.603 回答
3

MSDN

return 语句终止它出现的方法的执行,并将控制权返回给调用方法。它还可以返回一个可选值。如果方法是 void 类型,return 语句可以省略。

例子

//this would do nothing
public void method()
{
   return;
}


 //this would return true
 //notice the return type of bool this means
 //the method expects a true\false value
public bool method2()
{
   return true;
}

public void test()
{
    if(method2())
        method()
}

现在,如果您运行测试,method2 将始终返回 true,而 method1 将结束其处理

于 2009-02-23T19:15:29.303 回答
2

return语句确实退出了当前方法,而不仅仅是代码块(for/while/if/etc)。因此,它适用于以下情况:

public void MyMethod(object myObject)
{
    if (myObject == null)
    {
        return;  // exits method.
    }

    // do something with myObject
}

附加信息:我要指出的是,许多人更喜欢在方法中有一个退出点,但是,在某些情况下,执行类似于此处示例的操作可能会很有用。我总是会尝试找到限制方法中返回或退出点数量的方法。

于 2009-02-23T19:17:58.470 回答
1

在您的情况下,不 - 但是如果您在“if”语句之后有其他代码,您只想在您的语句为假时运行(例如 if abc != "a"),那么return允许您绕过它并退出函数/方法。

于 2009-02-23T19:14:52.533 回答
1

在循环或 case 语句中,您可以使用break来实现此结果。不过,这通常不适用于 if 语句或代码块。

是的,return 退出了封闭函数。

于 2009-02-23T19:17:21.717 回答
0

执行return语句会使执行跳出方法。如果没有返回,它只会继续下一条语句。

于 2009-02-23T19:15:08.273 回答
0

是的,在这种情况下,您的方法没有返回类型。例如

public void Foo
{
 if (abc == "a")
 {
  // do something here...
  return;
 }
 // some other code
}

也就是说如果 abd = "a",则退出该方法,这样一些其他代码就不会被执行。

于 2009-02-23T19:16:23.700 回答
0

它可以是一种更简洁的代码编写方式。我通常在方法开始处或附近的保护子句中执行此操作。如果您有错误情况,只需“返回”该方法即可。它节省了将其余工作包装在 else 块中的操作。看似微不足道,但它有助于降低代码复杂度。

于 2009-02-23T19:24:56.877 回答