你能用这个吗;return";C#方法中声明为无效的语句?

你能用这个吗;return";C#方法中声明为无效的语句?,c#,return,void,C#,Return,Void,在阅读研究指南时,我注意到作者说,在声明返回类型为void的方法中包含return语句是非法的。但是,当我创建以下方法时,Visual Studio没有在编辑器中标记它,也没有编译失败: private void ReturnNothing() { return; } 那么,真正的答案是什么?这合法吗?是的,这绝对合法 只有在返回后尝试输入值时才是非法的。这是错误的返回0作者可能指的是表格 return value ; 当返回类型==void(但当返回类型!=void)时,该选项实际

在阅读研究指南时,我注意到作者说,在声明返回类型为void的方法中包含
return
语句是非法的。但是,当我创建以下方法时,Visual Studio没有在编辑器中标记它,也没有编译失败:

private void ReturnNothing()
{
    return;
}

那么,真正的答案是什么?这合法吗?

是的,这绝对合法


只有在返回后尝试输入值时才是非法的。这是错误的
返回0

作者可能指的是表格

return value ;

当返回类型==
void
(但当返回类型!=
void
)时,该选项实际上无效。

答案可能重复,原因及反对理由请参见。不要认为它与前两个问题完全重复。一点也不。@MarioRossi-不必是完全重复的。。。一位MCSD的研究人员显然查到了该声明在C#规范中是否有效,因此似乎完全可以复制。我不想公布我正在阅读的指南的实际名称,因为我不确定这是否被允许,我不想指责作者发布了不好的数据。我只是不确定真正的答案是什么,因为指南说这是非法的,但Visual Studio允许我使用它。事实上,作者在我所指的场景之后提到了您的场景。@MarioRossi我只是在第四章,我已经发现了一些拼写错误,但这个错误似乎很重要,应该忽略。这就是我决定征求意见的原因。非无效方法的要求是:(1)所有
return
语句都有一个可转换为return类型的表达式,(2)方法的终点不可到达。这在逻辑上并不意味着非void方法必须有返回
intfoo(){throw new NotImplementedException();}
满足这两个要求;可能的零返回语句中的零有一个表达式可转换为
int
,并且终点不可到达,因此它是合法的。@EricLippert是的,这是正确的。我不知道如何向一个刚刚学习C#的人展示它,而不分散他/她对解释核心的注意力。也许通过一个好的评论?:-)谢谢你,埃里克。