解決在事件聲明中加入匿名空委託的缺點
雖然在事件聲明中加入匿名空委託的做法具有以下好處:避免空檢查,引發對其潛力的擔憂
性能注意事項
與擔憂相反,使用空事件訂閱者不會帶來明顯的性能影響。呼叫空委託相關的開銷很小,不太可能顯著影響應用程式效能。
維護頭痛
空事件訂閱者的使用相對不常見,這意味著對於未來的維護者來說,這可能不會立即顯而易見。但是,使用描述性命名約定和程式碼文件可以幫助緩解這一潛在問題。
替代方法:使用擴充方法進行空檢查緩解
而不是依賴空事件對於訂閱者,另一種方法是使用封裝空檢查的擴充方法。這種方法具有以下優點:
範例
可以定義以下擴展方法來處理空事件檢查:
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中文網其他相關文章!