2010-06-09 66 views
6

我看到人們確定他們這樣的活動:爲什麼此事件與匿名代理一起聲明?

public event EventHandler<EventArgs> MyEvent = delegate{}; 

有人能解釋這是怎麼從定義它,沒有它有什麼不同?是否避免在提高事件時檢查空值?

+0

如果我沒看錯的,這樣做的正確的術語是「匿名方法」不是「匿名委託」。 – 2010-06-09 22:48:51

回答

10

你猜對了 - 加入空委託可以讓你避免這種情況:

public void DoSomething() { 
    if (MyEvent != null) // Unnecessary! 
     MyEvent(this, "foo"); 
} 
2

該聲明確保MyEvent永遠不爲空,從而消除了每次都必須檢查空值的單調乏味且容易出錯的任務,代價是每次觸發事件時執行額外的空委託。