【发布时间】:2016-07-18 01:58:37
【问题描述】:
我不知道这是怎么回事,我在玩 C# 中的有表情的成员,我发现了一些奇怪的地方。
本质上,如果您创建一个具有 void 返回类型的方法表达式体成员,您仍然可以使用非 void 返回类型的方法作为表达式。
例子:
public void MethodA() { }
public void MethodB() => MethodA();
按预期工作。
public string MethodA() { return "MethodA"; }
public void MethodB() => MethodA();
编译得很好(我没有运行它来测试,但它编译的事实让我感到困惑)。这让我很困惑,就像我在脑海中看到的那样:
public void MethodB() { return MethodA(); }
这显然是无效的,因为return 语句实际上返回了一个值,这在void 方法中是不允许的。
但是,奇怪的是以下内容无法编译:
public void MethodC() => "MethodC";
并给出“仅赋值...”错误。
为什么会这样?这是有意的,还是某种错误?有什么我想念的吗?如果它是另一种方法,是否允许表达式主体成员丢弃表达式的结果?
【问题讨论】:
标签: c# function methods return expression