首页 > 后端开发 > C++ > `=>`在c#表达型成员中是什么意思?

`=>`在c#表达型成员中是什么意思?

Mary-Kate Olsen
发布: 2025-01-30 23:26:11
原创
625 人浏览过

What Does `=>` Mean in C# Expression-Bodied Members?

属性或方法中的“=>”含义

在遇到如下代码时:

<code class="language-csharp">public int MaxHealth =>
        Memory[Address].IsValid ? 
        Memory[Address].Read<int>(Offs.Life.MaxHp) : 
        0;</code>
登录后复制

重要的是要理解,这不是 lambda 表达式,而是一个表达式体成员。

表达式体成员

当编译器遇到表达式体属性成员时,它会将其转换为一个 getter:

<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 = x ? y : z;</code>
登录后复制

表达式体属性是一个 getter,每次访问该属性时都会调用它。另一方面,字段在实例化类型时只初始化一次。

语法糖

表达式体成员纯粹是语法糖,除了现有功能之外没有任何附加功能。它们通过允许以下内容为属性成员提供更简洁的语法:

  • 无需 return 语句(隐式返回表达式)
  • 无需语句块(主体是单个表达式)
  • 无需“get”关键字(由表达式体成员语法隐含)

附加说明

  • 表达式体成员也适用于索引器、方法、运算符、构造函数和终结器(在 C# 7.0 或更高版本中)。
  • 它们不适用于嵌套类型、事件或字段。
  • 虽然它们在使用“=>”方面类似于 lambda 表达式,但它们并非真正的 lambda 表达式。表达式体成员只是指示编译器在幕后生成特定成员。

以上是`=>`在c#表达型成员中是什么意思?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板