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

本文关键字:何区 成员 | 更新日期: 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:只有赋值、调用、递增、递减和新对象表达式可以用作语句"。