Синтаксис удаления события C#

Конечно, это возможно. Если Вы хотите поймать запросы POST, отправленные к Вашему серверу и кэшировать данные, переданные обратно, чтобы быть снова посланными позже - никакой пот.

хитрая часть прибывает в оценку "состояния". Как Вы решаете данные, которые Вы хотите передать обратно пользователю, действительно должно быть то же? Что, если его cookie изменились - который изменяет данные, которые Вы хотите передать обратно?

Что было бы, если пользователь выполнил запрос POST к Вашей домашней странице, и с прошлого раза, когда он сделал это, другой пользователь отправил ему сообщение (использующий некоторую систему в Вашем сайте.) Необходимо было бы определить, что как изменение состояния, и отправляют новую версию домашней страницы, с уведомлением о сообщении пользователю в следующий раз, когда он загружает домашнюю страницу. Даже если параметры POST являются тем же.

8
задан Mark T 27 August 2009 в 15:38
поделиться

3 ответа

Знаки + = и - = являются сокращениями синтаксиса для встроенных внутренних методов с именами Add () и Remove (), которые добавляют или удаляют указатель на внутренний связанный список делегатов, который делегат имеет частное поле. Когда вы запускаете Remove, он начинается с заголовка связанного списка и проверяет каждого делегата в списке по одному, пока не найдет тот, который «равен» тому, который вы передали методу Remove (). (с использованием синтаксиса - =)

Затем он удаляет этот список из связанного списка и исправляет связанный список для сохранения возможности подключения ...

В этом контексте метод 'equals' (для делегата () ) переопределяется, поэтому он сравнивает только цель делегата и methodPtr, который будет таким же, даже если вы создали новый делегат для передачи в Remove ...

19
ответ дан 5 December 2019 в 06:38
поделиться

«Новый MyHandler» на самом деле избыточен. Вы можете просто сделать

Something += HandleSomething; // add
Something -= HandleSomething; // remove

Все события в C # являются многоадресными делегатами, поэтому синтаксис + = и - = указывает на то, что вы добавляете / удаляете делегата в список вызываемых делегатов.

Что касается того, что происходит за кулисами лучшее объяснение, которое я нашел, - Джона Скита .

7
ответ дан 5 December 2019 в 06:38
поделиться

Вы можете рассматривать события как методы-заполнители для делегированной логики, которая выполняется при возникновении события. У одного события может быть несколько подписчиков (мультикастинг), поэтому синтаксис + = и - = - это способ присоединения или удаления одного обработчика событий. Простое выполнение назначения приведет к сбросу подписок на события, что может вызвать нежелательные побочные эффекты.

РЕДАКТИРОВАТЬ: эта ссылка объясняет больше о событиях в C #

-1
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: