Разница между событием EventHandler <T>против EventHandler <T> - PullRequest
1 голос
/ 22 апреля 2011

В чем разница между этими двумя утверждениями?

private static event EventHandler<MyEventArg> MyNewEvent;
private static EventHandler<MyEventArg> MyNewEvent;

Кажется, что они оба ведут себя одинаково.Я использую .net 3.5.Есть ли другие способы определить это так, чтобы они были функционально идентичны?

1 Ответ

2 голосов
/ 22 апреля 2011

Разница в том, что вы можете вызывать событие только из класса, в котором оно было объявлено.

Событие похоже на автоматическое свойство.Для каждого события компилятор создает:

  1. Основной частный делегат.
  2. add открытый метод.
  3. remove открытый метод.

Когда другой класс делает +=, он преобразуется в вызов add.Поскольку делегат является закрытым, его нельзя вызвать из другого класса, и невозможно свободно получить / изменить список вызовов.

...