2014-10-31 1 views
0

Пожалуйста, я хочу знать разницу между этими двумя. Я часто использую этот += для событий какВ чем разница между MinusEqual (- =) и PlusEqual (+ =), используемой в объявлении события C#

this.btnExport.Click += new System.EventHandler(this.btnExport_Click); 

Время от времени, я попадались иногда приходят через несколько заявлений, как показано ниже.

this.cmbClient.SelectedIndexChanged -= new System.EventHandler(this.cmbClient_SelectedIndexChanged); 

Я пытаюсь проверить, какие различия существуют на msdn, но не смог найти источник. Пожалуйста, любая помощь или разъяснение будут оценены.

+0

Один дополнительный вычет. –

+0

'- =' - это противоположность '+ =' –

+0

. Я понимаю. Но что делать - = делать в случае события выше? –

ответ

4

Проще говоря, += Подписывать обработчик события, а -= отписывает обработчик от события. (Если указанный обработчик не существующий абонент, попытка игнорируется.)

Обратите внимание, что вы можете использовать значительно более простой синтаксис, как в C# 2:

this.btnExport.Click += this.btnExport_Click; 

Это использует групповую конвертацию в метод для преобразования this.btnExport_Click в EventHandler.

Как событие реализует подписку и отмену подписки до реализации. Часто это просто вопрос использования Delegate.Combine и Delegate.Remove, но это не обязательно. По сути, событие немного похоже на свойство - кроме get и set функциональность, она имеет add и remove; с использованием += на событии вызывается часть add, а с использованием -= вызывается часть remove.

Для получения более подробной информации см. Мои article on delegates and events.

+0

OMG теперь я понимаю. никогда не думал об этом именно так. Спасибо, парни. –

2

+ = зарегистрирует событие мероприятия для события.

- = будет отменять регистрацию обработчика события из события.

+0

Спасибо. Теперь я понимаю. Никогда, хотя это так. Я никогда не знал, что мы можем отменить Обработчик во время выполнения. –

Смежные вопросы