Подтвердить что ты не робот

Удаление обработчиков событий

Это:

Button.Click -= new EventHandler(Button_Click);

то же самое, что и:

Button.Click -= Button_Click;

Я спрашиваю, потому что для меня кажется, что первая удаляет новую ссылку на метод, а вторая удаляет сам метод. Но опять же, может быть, новая часть EventHandler неявна в + = или - = перегрузке, если программист явно не назначает это так?

Если это отличается от

Button.Click -= new EventHandler(Button_Click);

VS

Button.Click -= Button_Click;

Спасибо.

4b9b3361

Ответ 1

То же самое. Во-вторых, это просто синтаксический сахар для первого, и сравнение равенства перегружено соответствующим образом для типов делегатов:

Два делегата одного типа с одинаковыми целями, методами и списками вызовов считаются равными.

Источник: MSDN, Delegate.Equality Operator

Ответ 2

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