Конечно, это возможно. Если Вы хотите поймать запросы POST, отправленные к Вашему серверу и кэшировать данные, переданные обратно, чтобы быть снова посланными позже - никакой пот.
хитрая часть прибывает в оценку "состояния". Как Вы решаете данные, которые Вы хотите передать обратно пользователю, действительно должно быть то же? Что, если его cookie изменились - который изменяет данные, которые Вы хотите передать обратно?
Что было бы, если пользователь выполнил запрос POST к Вашей домашней странице, и с прошлого раза, когда он сделал это, другой пользователь отправил ему сообщение (использующий некоторую систему в Вашем сайте.) Необходимо было бы определить, что как изменение состояния, и отправляют новую версию домашней страницы, с уведомлением о сообщении пользователю в следующий раз, когда он загружает домашнюю страницу. Даже если параметры POST являются тем же.
Знаки + = и - = являются сокращениями синтаксиса для встроенных внутренних методов с именами Add () и Remove (), которые добавляют или удаляют указатель на внутренний связанный список делегатов, который делегат имеет частное поле. Когда вы запускаете Remove, он начинается с заголовка связанного списка и проверяет каждого делегата в списке по одному, пока не найдет тот, который «равен» тому, который вы передали методу Remove (). (с использованием синтаксиса - =)
Затем он удаляет этот список из связанного списка и исправляет связанный список для сохранения возможности подключения ...
В этом контексте метод 'equals' (для делегата () ) переопределяется, поэтому он сравнивает только цель делегата и methodPtr, который будет таким же, даже если вы создали новый делегат для передачи в Remove ...
«Новый MyHandler» на самом деле избыточен. Вы можете просто сделать
Something += HandleSomething; // add
Something -= HandleSomething; // remove
Все события в C # являются многоадресными делегатами, поэтому синтаксис + = и - = указывает на то, что вы добавляете / удаляете делегата в список вызываемых делегатов.
Что касается того, что происходит за кулисами лучшее объяснение, которое я нашел, - Джона Скита .
Вы можете рассматривать события как методы-заполнители для делегированной логики, которая выполняется при возникновении события. У одного события может быть несколько подписчиков (мультикастинг), поэтому синтаксис + = и - = - это способ присоединения или удаления одного обработчика событий. Простое выполнение назначения приведет к сбросу подписок на события, что может вызвать нежелательные побочные эффекты.
РЕДАКТИРОВАТЬ: эта ссылка объясняет больше о событиях в C #