之間的區別 - 如果我定義與inital空委託的事件我不需要檢查空什麼是下面的代碼添加新的事件
class MyClass
{
public event EventHandler<MyEventArgs> MyEvent = delegate { };
void SomeMethod()
{
...
MyEvent(); // No need to check for null
...
}
}
- 否則我需要檢查空
class MyClass
{
public event EventHandler<MyEventArgs> MyEvent;
void SomeMethod()
{
...
if (MyEvent != null) // No need to check for null
MyEvent();
...
}
}
這些有什麼區別?在哪些情況下比另一個更好?
感謝
總是附加虛擬事件處理程序的更糟糕的事情是委託處理方法和委託調用針對委託執行單一操作的情況進行了優化。將委託添加到null很容易,就像從它自己刪除委託一樣。儘管微軟設計了MultiCastDelegate以進行快速調用,但仍然存在一個額外的間接層,對於單個直接委派來說不是必需的。 – supercat