В чем разница между событиями с обработчиками делегатов и событиями без них?
Вопрос
В чем разница между этим:
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» — это синтаксический сахар.Компилятор создаст для вас новую оболочку.