Я видел, как люди определяют свои события следующим образом:
public event EventHandler<EventArgs> MyEvent = delegate{};
Может кто-нибудь объяснить, чем это отличается от определения без него?Чтобы избежать проверки на ноль при возбуждении события?
Вы получили это - добавление пустого делегата позволяет избежать этого:
public void DoSomething() { if (MyEvent != null) // Unnecessary! MyEvent(this, "foo"); }
Это объявление гарантирует, что MyEvent никогда не будет нулевым, устраняя утомительную и подверженную ошибкам задачу необходимости проверять наличие нулевого значения каждый раз, за счет выполнения дополнительного пустого делегата при каждом запуске события.
MyEvent