В чем разница между событиями с обработчиками делегатов и событиями без них? - PullRequest
6 голосов
/ 23 сентября 2008

Какая разница между:

this.btnOk.Click += new System.EventHandler(this.btnOK_Click);

а это?

this.btnOk.Click += this.btnOK_Click;

Они оба работают. Первый - это то, к чему Visual Studio по умолчанию при использовании фрагментов. Но кажется, что это только лишняя реклама или я что-то упустил?

Ответы [ 4 ]

10 голосов
/ 23 сентября 2008

Без разницы. Пропуск экземпляра делегата - это всего лишь синтаксическая конфета; Компилятор C # создаст для вас экземпляр делегата.

4 голосов
/ 23 сентября 2008

В C # 3.0 и более поздних версиях нет никакой разницы. До C # 3.0 EventHandlers требовались из-за ограничений компилятора, но с появлением C # 3.0 вторая форма предпочтительна, если вы не хотите быть очень явным.

1 голос
/ 23 сентября 2008

"+ = Delegate_Name" является синтаксическим сахаром. Компилятор создаст новую оболочку для вас.

1 голос
/ 23 сентября 2008

Я считаю, что в C # начиная с версии 3.0 неявно добавлен обработчик делегата. Тем не менее, это может помочь быть более явным, особенно когда существует несколько возможных типов делегатов.

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