首頁 >後端開發 >C++ >C# 事件處理:` = anEvent` 和 ` = new EventHandler(anEvent)` 有什麼差別?

C# 事件處理:` = anEvent` 和 ` = new EventHandler(anEvent)` 有什麼差別?

Barbara Streisand
Barbara Streisand原創
2025-01-08 07:26:39287瀏覽

C# Event Handling: What's the Difference Between ` = anEvent` and ` = new EventHandler(anEvent)`?

C# 中 = anEvent = new EventHandler(anEvent) 的區別

C# 中的 lambda 表達式簡化了新增事件處理程序的語法,導致了兩種常見的做法:

1. = anEvent

  • 範例:button1.Click = anEvent;
  • 這裡,anEvent 是一個委託,它引用了事件發生時要執行的方法。編譯器會根據方法簽章自動推斷正確的委託類型。

2. = new EventHandler(anEvent)

  • 範例:button1.Click = new EventHandler(anEvent);
  • 此語法在賦值事件處理程序之前明確指定了委託類型(EventHandler)。

兩種方法的差別

根本差別在於委託推論機制:

  • 第一種方法中,編譯器推斷委託類型,提供簡潔的語法糖。
  • 第二種方法中,明確定義了委託類型,這在 C# 1.0 項目中是必要的,因為 C# 2.0 之前沒有引入委託推論。

總結:它們是等效的

兩種方法都能實現相同的功能。選擇哪一種方法取決於個人偏好。對於 C# 2.0 及更高版本的項目,使用 = anEvent 可以使程式碼更簡潔,而 = new EventHandler(anEvent) 則可以明確定義委託類型。

以上是C# 事件處理:` = anEvent` 和 ` = new EventHandler(anEvent)` 有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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