evento (referência C#)
Um evento é um membro que permite que um objeto acione notificações. Os usuários de eventos podem anexar código executável para eventos fornecendo manipuladores de eventos. A event
palavra-chave declara um evento. O evento é do tipo delegado. Enquanto um objeto dispara um evento, o evento invoca todos os manipuladores de eventos fornecidos. Os manipuladores de eventos são instâncias delegadas adicionadas ao evento e executadas quando o evento é gerado. Os usuários de eventos podem adicionar ou remover seus manipuladores de eventos em um evento.
Exemplo
O exemplo a seguir mostra como declarar e gerar um evento que usa EventHandler como o tipo de delegado subjacente. Para obter o exemplo de código completo que também mostra como usar o tipo de delegado genérico EventHandler<TEventArgs> e como se inscrever em 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 de multicast que só pode ser invocado de dentro da classe (ou classes derivadas) ou struct onde são declarados (a classe publisher). Se outras classes ou structs se inscreverem no evento, seus métodos de manipulador de eventos serão chamados quando a classe publisher gerar o evento. Para obter mais informações e exemplos de código, consulte Eventos e delegados.
Os eventos podem ser marcados como públicos, privados, protegidos, internos, protegidos internos ou privados. 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 se aplicam a eventos.
Palavra-chave | Description | Para obter mais informações |
---|---|---|
estático | Disponibiliza o evento para chamadores a qualquer momento, mesmo que nenhuma instância da classe exista. | Classes estáticas e membros de classes estáticas |
virtual | Permite que classes derivadas substituam o comportamento do evento usando a palavra-chave override . | Herança |
selado | Especifica que, para classes derivadas, ele não é mais virtual. | |
RESUMO | O compilador não gerará os blocos de acesso a add eventos e remove e, portanto, as classes derivadas devem fornecer sua própria implementação. |
Um evento pode ser declarado como um evento estático usando a palavra-chave estática . Isso torna o evento disponível para chamadores a qualquer momento, mesmo que nenhuma instância da classe exista. Para obter mais informações, consulte Classes estáticas e membros de classes estáticas.
Um evento pode ser marcado como um evento virtual usando a palavra-chave virtual . Isso permite que as classes derivadas substituam 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 lacrado, o que especifica que, para classes derivadas, ele não é mais virtual. Por fim, um evento pode ser declarado abstrato, o que significa que o compilador não gerará os blocos de acesso ao add
evento e remove
. Portanto, as 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 do C#.