问题描述
我很好奇,如果有正当的理由,为什么C#不支持调用一个void方法作为return语句的一部分,当调用方法的返回类型也是无效的。
I am curious if there is a legitimate reason as to why C# does not support calling a void method as part of the return statement when the calling method's return type is also void.
public void MethodA()
{
return;
}
public void MethodB()
{
return MethodA();
}
所以,我们通常会看到这样的:
So we would normally see this:
public void MethodMeh()
{
if (expression)
{
MethodA();
return;
}
// Do more stuff
}
...当我们可以用这个来代替:
... when we could be using this instead:
public void MethodAwesome()
{
if (expression)
return MethodA();
// Do more stuff
}
这是一个语言的限制,由于C#如何处理无效
Is this a language limitation due to how C# handles void?
推荐答案
由于它只是方式的。
有一个方法可以使用收益
语句来控制返回给调用者。
在返回无效
,收益
语句不能指定
表达的方法。 在返回非的方法 - 无效
,收益
语句必须
包括表达式计算返回值。
这是一个武断的决定(与ANSI C和它的其他后代兼容性大概制造),和其他语言做的事情不同的。
It's an arbitrary decision (presumably made for compatibility with ANSI C and its other descendants), and other languages do things differently.
例如,在Python中,所有函数返回一个值。如果执行收益
语句没有值,或者让控制到达函数的结尾,那么它就像你写返回None
。
For example, in Python, all functions return a value. If you execute a return
statement without a value, or let control reach the end of the function, then it's just like you had written return None
.
在此相反,帕斯卡尔限制函数
的术语来是有返回值的子程序;如果你不想返回任何东西,你用程序
代替。
In contrast, Pascal limits the terminology of function
to subprograms that have a return value; if you don't want to return anything, you use a procedure
instead.
这篇关于为什么C#不允许我打电话给一个void方法作为return语句的一部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!