首頁 >後端開發 >C++ >表達式成員與lambda表達式:C#'s` =>`操作員用法有什麼區別?

表達式成員與lambda表達式:C#'s` =>`操作員用法有什麼區別?

Patricia Arquette
Patricia Arquette原創
2025-01-30 23:16:10331瀏覽

Expression-Bodied Members vs. Lambda Expressions: What's the Difference in C#'s `=>` Operator Usage?

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 表達式用於定義可以作為參數傳遞給其他函數的匿名方法或表達式。它們與表達式成員體無關。

以上是表達式成員與lambda表達式:C#'s` =>`操作員用法有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn