在代码块中使用return关键字

时间:2009-02-23 19:12:22

标签: c# function return

说:

之间有什么区别
if (abc == "a")
{
// do something here...
return;
}

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

我是一个C#编码器,我知道返回关键字后跟一个类型或变量会返回该项,但在上面的上下文中,返回似乎只是为了退出代码块,但它是否会使任何功能或性能发生变化关于代码?

由于

9 个答案:

答案 0 :(得分:13)

“return”退出函数,而不仅仅是封闭的代码块。所以,如果你的代码块是在函数的上下文中,那么(我不知道C#所以我使用的是Java语法):

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

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

答案 1 :(得分:3)

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

答案 2 :(得分: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()
}

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

答案 3 :(得分:2)

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

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

    // do something with myObject
}

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

是的,返回退出封闭函数。

答案 6 :(得分:0)

执行return语句将使执行跳出该方法。如果没有返回,它将继续使用下一个语句。

答案 7 :(得分:0)

是的,在这种情况下,您的方法没有返回类型。 e.g。

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

这就是说如果abd =“a”,则退出该方法,以便不执行其他一些代码。

答案 8 :(得分:0)

它可以是一种更简洁的代码编写方式。我通常在方法开头或附近的保护条款中执行此操作。如果您有错误条件,只需“退出”该方法。它可以将其余的工作包装在一个else块中。看似微不足道,但它有助于降低代码复杂性。