表达身体成员如何区分空和非空
本文关键字:何区 成员 | 更新日期: 2023-09-27 18:35:20
使用 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:只有赋值、调用、递增、递减和新对象表达式可以用作语句"。