event (Справочник по C#)
Используйте ключевое слово 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.
if (SampleEvent != null)
SampleEvent(this, new SampleEventArgs("Hello"));
}
}
События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя).Если на событие подписаны другие классы или структуры, их методы обработчиков событий будут вызваны когда класс издателя инициирует событие.Дополнительные сведения и примеры кода см. в разделах События (Руководство по программированию в C#) и Делегаты (Руководство по программированию на C#).
События можно пометить как открытые (public), закрытые (private), защищенные (protected), внутренние (internal) или protectedinternal.Эти модификаторы доступа определяют порядок доступа к классу для пользователей класса.Дополнительные сведения см. в разделе Модификаторы доступа (Руководство по программированию в C#).
Ключевые слова и события
К событиям применяются следующие ключевые слова.
Ключевое слово |
Описание |
Дополнительные сведения |
---|---|---|
Делает событие доступным для вызова в любое время, даже если экземпляр класса отсутствует. |
Статические классы и члены статических классов (Руководство по программированию в C#) |
|
Позволяет производным классам переопределять поведение события при помощи ключевого слова override. |
||
Указывает, что для производных классов событие более не является виртуальным. |
|
|
Компилятор не создаст блоки методов доступа к событиям add и remove и, следовательно, производные классы должны предоставлять собственную реализацию. |
|
Событие можно объявить как статическое событие при помощи ключевого слова static.При этом событие становится доступным для вызова в любое время, даже если экземпляр класса отсутствует.Дополнительные сведения см. в разделе Статические классы и члены статических классов (Руководство по программированию в C#).
Событие может быть помечено как виртуальное событие при помощи ключевого слова virtual.Это позволяет производным классам переопределять поведение события при помощи ключевого слова override.Дополнительные сведения см. в разделе Наследование (Руководство по программированию на C#).Событие, переопределяющее виртуальное событие, может также быть sealed, что определяет, что для производных классов оно более не является виртуальным.И наконец, событие можно объявить как abstract, что означает, что компилятор не создаст блоки методов доступа к событию add и remove.Таким образом, производные классы должны предоставлять собственную реализацию.
Спецификация языка C#
Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Задачи
Ссылки
Модификаторы (Справочник по C#)
Основные понятия
Руководство по программированию на C#