evento (referência C#)

A palavra-chave event é usada para declarar um evento em uma classe publicadora.

Exemplo

O exemplo a seguir mostra como declarar e acionar um evento que usa o EventHandler como o tipo delegado subjacente. Para obter o exemplo de código completo que também mostra como usar o EventHandler<TEventArgs> tipo de delegado genérico e como assinar um evento e criar um método manipulador de eventos, consulte como publicar eventos que estão em conformidade com as diretrizes do .net.

public class SampleEventArgs
{
    public SampleEventArgs(string text) { Text = text; }
    public string Text { get; } // 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 in a thread-safe manner using the ?. operator.
        SampleEvent?.Invoke(this, new SampleEventArgs("Hello"));
    }
}

Os eventos são um tipo especial de delegado multicast que só podem ser invocados de dentro da classe ou struct em que eles são declarados (a classe publicadora). Se outras classes ou structs assinarem o evento, seus respectivos métodos de manipulador de eventos serão chamados quando a classe publicadora acionar o evento. Para obter mais informações e exemplos de código, consulte Eventos e Delegados.

Os eventos podem ser marcados como público, privado, protegido, interno, interno protegidoou protegido privado. Esses modificadores de acesso definem como os usuários da classe podem acessar o evento. Para obter mais informações, consulte Modificadores de Acesso.

Palavras-chave e eventos

As palavras-chave a seguir aplicam-se a eventos.

Palavra-chave Descrição Para obter mais informações
static Torna o evento disponível para chamadores a qualquer momento, mesmo se não existir nenhuma instância da classe. Classes static e membros de classes static
virtuaisLUNs Permite que classes derivadas substituam o comportamento do evento, usando a palavra-chave override. Herança
sealed Especifica que, para classes derivadas, o evento não é mais virtual.
resume O compilador não gerará mais os blocos de acessador de evento add e remove, portanto, as classes derivadas devem fornecer sua própria implementação.

Um evento pode ser declarado como um evento estático, usando apalavra-chave static. Isso torna o evento disponível para chamadores a qualquer momento, mesmo se não existir nenhuma instância da classe. Para obter mais informações, consulte classes estáticas e membros de classe estática.

Um evento pode ser marcado como um evento virtual, usando a palavra-chave virtual. Isso habilita as classes derivadas a substituírem o comportamento do evento, usando a palavra-chave override. Para obter mais informações, consulte Herança. Um evento que substitui um evento virtual também pode ser sealed, o que especifica que ele não é mais virtual para classes derivadas. Por fim, um evento pode ser declarado abstract, o que significa que o compilador não gerará os blocos de acessador de evento add e remove. Portanto, classes derivadas devem fornecer sua própria implementação.

Especificação da linguagem C#

Para obter mais informações, consulte a especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Confira também