Объявляется полеподобное событие , типа ChangedEventhandler
, называемое Changed
. В основном это примерно эквивалентно:
private ChangedEventHandler changedHandler;
public event ChangedEventHandler Changed
{
add
{
lock(this)
{
changedHandler += value;
}
}
remove
{
lock(this)
{
changedHandler -= value;
}
}
}
Другими словами, он создает событие , на которое клиенты могут подписываться и отписываться, и переменную для хранения этих подписок. Код подписки / отмены подписки на событие просто объединяет / удаляет данный обработчик с существующими и сохраняет результат в поле.
В результате клиенты могут подписаться на событие, например,
foo.Changed += ...;
и затем, когда вы поднимаете событие, вызываются все обработчики.
См. мою статью о событиях и делегатах для получения дополнительной информации.