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

StackOverflow https://stackoverflow.com/questions/119160

  •  02-07-2019
  •  | 
  •  

Вопрос

В чем разница между этим:

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

и это?

this.btnOk.Click += this.btnOK_Click;

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

Это было полезно?

Решение

Нет разницы.Отказ от создания экземпляра делегата — это просто синтаксическая конфетка;компилятор C# автоматически сгенерирует экземпляр делегата.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top