Вопрос по .NET 1.1 C # Учебник по событиям из MSDN - PullRequest
0 голосов
/ 26 января 2010

Я смотрю на этот пример события http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx

Это все имеет смысл для меня, за исключением того, что следующая строка

public event ChangedEventHandler Changed;

Что это делает ?? Это какой-то список EVentCallbacks ?? Почему новый не используется здесь?

РЕДАКТИРОВАТЬ: Почему это не нужно новое ключевое слово ??

public event ChangedEventHandler Changed;

Ответы [ 3 ]

2 голосов
/ 26 января 2010

Объявляется полеподобное событие , типа ChangedEventhandler, называемое Changed. В основном это примерно эквивалентно:

private ChangedEventHandler changedHandler;

public event ChangedEventHandler Changed
{
   add
   {
       lock(this)
       {
           changedHandler += value;
       }
   }
   remove
   {
       lock(this)
       {
           changedHandler -= value;
       }
   }
}

Другими словами, он создает событие , на которое клиенты могут подписываться и отписываться, и переменную для хранения этих подписок. Код подписки / отмены подписки на событие просто объединяет / удаляет данный обработчик с существующими и сохраняет результат в поле.

В результате клиенты могут подписаться на событие, например,

foo.Changed += ...;

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

См. мою статью о событиях и делегатах для получения дополнительной информации.

0 голосов
/ 26 января 2010

Он связывает событие с именем Changed с делегатом ChangedEventHandler.

0 голосов
/ 26 января 2010

Это ваше собственное пользовательское событие, к которому вы прикрепляете свои обработчики событий.

...