![](/img/trans.png)
[英]Void-type method expression-bodied member allows expression of non-void type *if other method*
[英]How do expression bodied members distinguish between void and non-void?
使用C#6的表达式强健的成员,我可以编写:
public string FullName => $"{_firstName} {_lastName}";
我可以写:
static void Print(string message) => Console.WriteLine(message);
在第一个实例中,表达式返回某些内容。 在第二个中,没有。
在不需要任何其他语法的情况下,它如何确定如何“执行”操作? 还是仅仅是在编译时查看方法签名的一种情况?
我不喜欢在不知道发生什么的情况下让事情“正常工作”。
首先, FullName
是一个属性。 它总是返回一个值。 因此,主体的签名应为Func<T>
,其中T
是返回类型(在示例中定义为string
)或等效的委托。
您的方法void Print(string message)
的签名为Action<string>
,因为编译器了解到void不会返回值,而是采用单个参数。 它理解某些语句返回一个值(例如=> "a"
),而某些语句可以独立存在(尽管它们可能返回一个值,例如=> new object()
)。 因此,它可以告诉您是否搞砸了: “ CS0201:仅赋值,调用,递增,递减和新对象表达式可以用作语句” 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.