C# 表达式主体定义语法糖,=>箭头函数除了lambda表达式的其他用法 电脑版发表于:2024/2/23 15:21 官方文档: https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members C# 表达式主体定义语法糖中的 => 并不创建 lambda 表达式,而是定义了一个更简洁的成员实现 ###看一段C# 表达式主体定义语法糖的示例 ``` public CurrentUser currentUser => new CurrentUser(3); ``` 在C# 6.0及更高版本中,`public CurrentUser currentUser => new CurrentUser(3); `这句话是使用了所谓的“表达式主体定义”`(Expression-bodied definitions)`的语法糖。这种语法允许你以更简洁的方式定义属性、索引器、方法和构造函数的实现。 传统的完整写法可能是这样的: ``` public CurrentUser CurrentUser { get { return new CurrentUser(3); } } ``` 在这个传统的写法中,CurrentUser 是一个属性,它有一个 get 访问器,该访问器每次被调用时都会返回一个新的 CurrentUser 实例,参数为 3。 使用表达式主体定义后,代码变得更加简洁,同时保持了相同的语义。这种简化的写法特别适用于那些返回值是简单表达式的属性、方法或索引器。 表达式主体定义不仅限于属性,还可以用于方法,如下所示: ``` public int Add(int a, int b) => a + b; ``` 这个方法接受两个整数参数,并返回它们的和。使用表达式主体定义,你可以在不使用大括号和 return 关键字的情况下定义方法体。 需要注意的是,表达式主体定义有一些限制,例如它们不能包含控制流语句(如 if、switch、for、while 等),并且不能是 void 返回类型。