Удаление обработчиков событий - PullRequest
39 голосов
/ 20 августа 2009

Это:

Button.Click -= new EventHandler(Button_Click);

так же, как это:

Button.Click -= Button_Click;

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

Если все по-другому, как насчет

Button.Click -= new EventHandler(Button_Click);

VS

Button.Click -= Button_Click;

Спасибо.

Ответы [ 2 ]

46 голосов
/ 20 августа 2009

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

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

Источник: MSDN, Делегат. Оператор равенства

0 голосов
/ 20 августа 2009

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

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