首頁  >  文章  >  後端開發  >  C# 中的委託關鍵字和 lambda 表示法在功能上是否相同?

C# 中的委託關鍵字和 lambda 表示法在功能上是否相同?

Linda Hamilton
Linda Hamilton原創
2024-11-04 01:32:03925瀏覽

Are delegate keywords and lambda notation functionally identical in C#?

委託關鍵字與Lambda 表示法

在C# 中,出現一個關於兩個lambda 表達式的等價性的常見問題:

<code class="csharp">delegate { x = 0; }

() = > { x = 0 }</code>

編譯後它們的功能相同嗎?

答:
簡而言之,不。它們在語法上是等效的,但產生的委託類型有所不同。

深入研究:
雖然 delegate 關鍵字傳統上建立匿名委託,但將 lambda 與 delegate 關鍵字一起使用會產生也是匿名代表。但是,將 lambda 指派給表達式類型會建立一個表達式樹,隨後可以將其編譯為匿名委託。

高級注意事項:
這些表示法之間的選擇取決於預期用途:

  • 分配給委託類型(例如,Func、Action ):使用匿名委託進行運行時代碼產生。
  • 指派給表達式類型:使用表達式樹進行延遲執行或自訂程式碼產生。

以上是C# 中的委託關鍵字和 lambda 表示法在功能上是否相同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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