说:
之间有什么区别if (abc == "a")
{
// do something here...
return;
}
和上面一样,但没有return关键字?
我是一个C#编码器,我知道返回关键字后跟一个类型或变量会返回该项,但在上面的上下文中,返回似乎只是为了退出代码块,但它是否会使任何功能或性能发生变化关于代码?
由于
答案 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)
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块中。看似微不足道,但它有助于降低代码复杂性。