6
我看到人們確定他們這樣的活動:爲什麼此事件與匿名代理一起聲明?
public event EventHandler<EventArgs> MyEvent = delegate{};
有人能解釋這是怎麼從定義它,沒有它有什麼不同?是否避免在提高事件時檢查空值?
我看到人們確定他們這樣的活動:爲什麼此事件與匿名代理一起聲明?
public event EventHandler<EventArgs> MyEvent = delegate{};
有人能解釋這是怎麼從定義它,沒有它有什麼不同?是否避免在提高事件時檢查空值?
你猜對了 - 加入空委託可以讓你避免這種情況:
public void DoSomething() {
if (MyEvent != null) // Unnecessary!
MyEvent(this, "foo");
}
該聲明確保MyEvent
永遠不爲空,從而消除了每次都必須檢查空值的單調乏味且容易出錯的任務,代價是每次觸發事件時執行額外的空委託。
如果我沒看錯的,這樣做的正確的術語是「匿名方法」不是「匿名委託」。 – 2010-06-09 22:48:51