Почему это событие объявлено анонимным делегатом? - PullRequest
6 голосов
/ 10 июня 2010

Я видел, как люди определяют свои события следующим образом:

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

Может кто-нибудь объяснить, чем это отличается от определения без него?Чтобы избежать проверки на ноль при возбуждении события?

Ответы [ 2 ]

10 голосов
/ 10 июня 2010

Вы получили это - добавление пустого делегата позволяет избежать этого:

public void DoSomething() { 
    if (MyEvent != null) // Unnecessary! 
        MyEvent(this, "foo"); 
} 
2 голосов
/ 10 июня 2010

Это объявление гарантирует, что MyEvent никогда не будет нулевым, устраняя утомительную и подверженную ошибкам задачу необходимости проверять наличие нулевого значения каждый раз, за ​​счет выполнения дополнительного пустого делегата при каждом запуске события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...