我很好奇,当调用方法的返回类型也是 void 时,C# 不支持调用 void 方法作为 return 语句的一部分是否有正当理由。
public void MethodA()
{
return;
}
public void MethodB()
{
return MethodA();
}
所以我们通常会看到这个:
public void MethodMeh()
{
if (expression)
{
MethodA();
return;
}
// Do more stuff
}
...当我们可以使用它时:
public void MethodAwesome()
{
if (expression)
return MethodA();
// Do more stuff
}
这是由于 C# 处理 void 的方式造成的语言限制吗?
最佳答案
因为这很简单the language is defined .
A method can use
return
statements to return control to its caller. In a method returningvoid
,return
statements cannot specify an expression. In a method returning non-void
,return
statements must include an expression that computes the return value.
这是一个武断的决定(大概是为了与 ANSI C 及其其他后代兼容),其他语言的做法不同。
例如,在 Python 中,所有函数都有返回值。如果您执行一个没有值的 return
语句,或者让控制到达函数的末尾,那么就像您编写了 return None
一样。
相比之下,Pascal 将函数
的术语限制为具有返回值的子程序;如果你不想返回任何东西,你可以使用 procedure
代替。
关于c# - 为什么 C# 不允许我调用 void 方法作为返回语句的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665649/