首頁 > 後端開發 > C++ > 您應該在事件聲明中使用空的匿名委託嗎?

您應該在事件聲明中使用空的匿名委託嗎?

Barbara Streisand
發布: 2024-12-29 16:10:12
原創
199 人瀏覽過

Should You Use Empty Anonymous Delegates in Event Declarations?

事件聲明中的空匿名委託:潛在的缺點

在事件編程中,直接在事件聲明上添加空匿名委託的常見做法如下所示,透過消除null的需要來簡化事件引發檢查:

// Deliberately empty subscriber
public event EventHandler AskQuestion = delegate {};
登入後複製

雖然此技術解決了特定問題,但必須考慮潛在的缺點:

  1. 效能影響:呼叫空委託訂閱者每個事件呼叫可能會帶來可忽略不計的效能開銷。在高頻場景中,這種情況可能會累積。
  2. 維護開銷:雖然空委託的意圖最初可能很明確,但隨著時間的推移可能會變得不言自明。對於不熟悉該模式的開發人員來說,這可能會導致維護麻煩。

另一種方法是利用處理空檢查並簡化事件引發的擴展方法,而不是依賴空委託:

public static void Raise(this EventHandler handler, object sender, EventArgs e)
{
    if(handler != null)
    {
        handler(sender, e);
    }
}
登入後複製

使用此擴展,事件引發變得毫不費力並減少空檢查開銷:

// Works, even for null events.
MyButtonClick.Raise(this, EventArgs.Empty);
登入後複製

這種基於擴展的解決方案消除了與事件聲明中匿名空委託相關的性能和維護缺陷。

以上是您應該在事件聲明中使用空的匿名委託嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板