事件聲明中的空匿名委託:潛在的缺點
在事件編程中,直接在事件聲明上添加空匿名委託的常見做法如下所示,透過消除null的需要來簡化事件引發檢查:
// Deliberately empty subscriber public event EventHandler AskQuestion = delegate {};
雖然此技術解決了特定問題,但必須考慮潛在的缺點:
另一種方法是利用處理空檢查並簡化事件引發的擴展方法,而不是依賴空委託:
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中文網其他相關文章!