event (Справочник по C#)

Обновлен: Ноябрь 2007

Используйте ключевое слово event для объявления события в классе издателя.

Пример

В следующем примере показано как объявить и инициировать событие, использующее EventHandler в качестве базового типа делегата. Полный пример кода, демонстрирующий использование универсального типа делегата EventHandler<TEventArgs>, а также подписку на событие и создание метода обработчика событий см. в разделе Практическое руководство. Публикация событий, соответствующих рекомендациям .NET Framework (руководство по программированию в C#).

public class SampleEventArgs
{
    public SampleEventArgs(string s) { Text = s; }
    public String Text {get; private set;} // readonly
}
public class Publisher
{
    // Declare the delegate (if using non-generic pattern).
    public delegate void SampleEventHandler(object sender, SampleEventArgs e);

    // Declare the event.
    public event SampleEventHandler SampleEvent;

    // Wrap the event in a protected virtual method
    // to enable derived classes to raise the event.
    protected virtual void RaiseSampleEvent()
    {
        // Raise the event by using the () operator.
        SampleEvent(this, new SampleEventArgs("Hello"));
    }
}

События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя). Если на событие подписаны другие классы или структуры, их методы обработчиков событий будут вызваны когда класс издателя инициирует событие. Дополнительные сведения и примеры кода см. в разделах События (Руководство по программированию в C#) и Делегаты (руководство по программированию на C#).

События можно пометить как открытые (public), закрытые (private), защищенные (protected), внутренние (internal) или protectedinternal. Эти модификаторы доступа определяют порядок доступа к классу для пользователей класса. Дополнительные сведения см. в разделе Модификаторы доступа (Руководство по программированию в C#).

Ключевые слова и события

К событиям применяются следующие ключевые слова.

Ключевое слово

Описание

Дополнительные сведения

static

Делает событие доступным для вызова в любое время, даже если экземпляр класса отсутствует.

Статические классы и члены статических классов (руководство по программированию в C#)

virtual

Позволяет производным классам переопределять поведение события при помощи ключевого слова override.

Наследование (Руководство по программированию в C#)

sealed

Указывает, что для производных классов событие более не является виртуальным.

 

abstract

Компилятор не создаст блоки методов доступа к событиям add и remove и, следовательно, производные классы должны предоставлять собственную реализацию.

 

Событие можно объявить как статическое событие при помощи ключевого слова static. При этом событие становится доступным для вызова в любое время, даже если экземпляр класса отсутствует. Дополнительные сведения см. в разделе Статические классы и члены статических классов (руководство по программированию в C#).

Событие может быть помечено как виртуальное событие при помощи ключевого слова virtual. Это позволяет производным классам переопределять поведение события при помощи ключевого слова override. Дополнительные сведения см. в разделе Наследование (Руководство по программированию в C#). Событие, переопределяющее виртуальное событие, может также быть sealed, что определяет, что для производных классов оно более не является виртуальным. И наконец, событие можно объявить как abstract, что означает, что компилятор не создаст блоки методов доступа к событию add и remove. Таким образом, производные классы должны предоставлять собственную реализацию.

Спецификация языка C#

Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:

  • 1.6.6.4 События

  • 7.16.3 Присвоения событий

  • 10.8 События

  • 13.2.3 События интерфейса

См. также

Задачи

Практическое руководство. Объединение делегатов (многоадресные делегаты) (руководство по программированию в C#)

Основные понятия

Руководство по программированию в C#

Ссылки

Ключевые слова C#

Модификаторы (Справочник по C#)

Другие ресурсы

Справочник по C#