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

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

Пример

В следующем примере показано как объявить и инициировать событие, использующее EventHandler в качестве базового типа делегата. Полный пример кода, демонстрирующий использование универсального типа делегата EventHandler, а также подписку на событие и создание метода обработчика событий см. в разделе Практическое руководство. Публикация событий, соответствующих рекомендациям .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. 
            if (SampleEvent != null)
                SampleEvent(this, new SampleEventArgs("Hello"));
        }
    }

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

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

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

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

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

Описание

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

static

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

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

virtual

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

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

sealed

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

 

abstract

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

 

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

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

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

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

См. также

Задачи

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

Ссылки

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

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

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

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

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

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

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

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