C# 中 => 运算符的双重身份:表达式成员体与 Lambda 表达式
在 C# 中,=>
运算符具有两种截然不同的用途:
在表达式成员体中,=>
运算符将属性或方法名与其主体分隔开来。此语法允许使用单个表达式定义成员,无需使用大括号和单独的 get/set 块。
<code class="language-csharp">public int MaxHealth => Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0;</code>
等效于:
<code class="language-csharp">public int MaxHealth { get { return Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0; } }</code>
在字段初始化中,不使用 =>
运算符。而是使用传统语法为字段赋值。
<code class="language-csharp">public int MaxHealth = x ? y : z;</code>
等效于:
<code class="language-csharp">public int MaxHealth; // 字段声明 public int MaxHealth = x ? y : z; // 字段赋值</code>
关键区别:
表达式成员体和字段初始化之间的关键区别在于作用域和求值时机。表达式成员体定义一个属性 getter(或方法体),每次访问属性时都会执行。另一方面,字段初始化在实例化类型时只设置一次字段值。
在 Lambda 表达式中,=>
运算符用于将匿名函数的输入参数与其主体分隔开来。Lambda 表达式用于定义可以作为参数传递给其他函数的匿名方法或表达式。它们与表达式成员体无关。
以上是表达式成员与lambda表达式:C#'s` =>`操作员用法有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!