繁体   English   中英

表情健全的成员如何区分void和non-void?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM