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
}
Is this a language limitation due to how C# handles void?
Because it's simply the way 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.
It's an arbitrary decision (presumably made for compatibility with ANSI C and its other descendants), and other languages do things differently.
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.