比方說,我有成千上萬個對象的集合,所有這一切的實現如下:使用「無所事事」默認事件處理程序是否有任何性能缺陷?
public event EventHandler StatusChanged = (s,e) => {};
private void ChangeStatus()
{
StatusChanged(this, new EventArgs());
}
如果沒有處理程序訂閱了該事件的每個對象,並使用無操作的事件處理程序提供任何性能缺點?還是CLR聰明到可以忽略它?或者我最好在開火之前檢查一個StatusChanged
處理程序?
如果我說5000個對象可能同時觸發事件會怎麼樣?會有什麼明顯的效果? – Marcus 2010-02-02 12:24:44
@Marcus:對於3GHz處理器來說5000不是一個很大的數字,但如果你擔心,請檢查無效,而不是添加空處理程序。 – 2010-02-02 12:30:46
@Marcus:只有分析器可以回答這個問題。 – 2010-02-02 12:31:06