表达身体的成员如何区分虚空和非虚空?

6 .net c# il expression c#-6.0

有了C#6表达身体的成员,我可以写:

public string FullName => $"{_firstName} {_lastName}";

我可以写:

static void Print(string message) => Console.WriteLine(message);

在第一个实例中,表达式返回一些东西.在第二个,它没有.

这里发生了什么,以确定如何"行动"而不需要任何额外的语法?或者它只是在编译期间查看方法签名的情况?

在不知道发生了什么的情况下,我不会把事情留给"正常工作".

Pat*_*man 4

首先,FullName是财产。它总是返回一个值。因此,主体的签名应该是Func<T>,其中是返回类型(在示例中T定义)或等效委托。string

您的方法的签名void Print(string message)Action<string>,因为编译器知道 void 不返回值并采用单个参数。它理解某些语句返回一个值(例如=> "a"),而有些语句可以独立存在(尽管它们可能返回一个值,例如=> new object())。因此,如果你搞砸了,它可以告诉你:“CS0201:只有赋值、调用、递增、递减和新对象表达式可以用作语句”