首頁 > 後端開發 > C++ > `=>`在c#表達型成員中是什麼意思?

`=>`在c#表達型成員中是什麼意思?

Mary-Kate Olsen
發布: 2025-01-30 23:26:11
原創
626 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板