Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A
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 palavra-chave event 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.
A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.
A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.
Dica
Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.
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, consulte Como publicar eventos em conformidade com as Diretrizes do .NET. Esse exemplo demonstra o tipo de delegado genérico EventHandler<TEventArgs> , como assinar um evento e criar um método de manipulador de eventos.
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 delegados multicast que você só pode invocar de dentro da classe (ou classes derivadas) ou struct em que você os declara (a classe publisher). Se outras classes ou structs assinarem o 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.
Você pode marcar eventos como public, , private, protected, internal, protected internalou private protected. Esses modificadores de acesso definem como os usuários da classe podem acessar o evento. Para obter mais informações, consulte Modificadores de Acesso.
A partir do C# 14, você pode declarar eventos como partial. Eventos parciais têm uma declaração de definição e uma declaração de implementação. A declaração de definição deve usar a sintaxe semelhante a um campo. A declaração de implementação deve declarar os manipuladores add e remove.
Palavras-chave e eventos
As palavras-chave a seguir aplicam-se a eventos.
-
static: disponibiliza o evento para os chamadores a qualquer momento, mesmo que nenhuma instância da classe exista. Para obter mais informações sobre eventos estáticos, consulte Classes Estáticas e Membros de Classe Estática. -
virtual: permite que classes derivadas substituam o comportamento do evento usando a palavra-chave de substituição . Para obter mais informações sobre eventos virtuais, consulte Herança. -
sealed: especifica que, para classes derivadas, ele não é mais virtual. -
abstract: o compilador não gera osaddblocos do acessador de eventos eremove, portanto, as classes derivadas devem fornecer sua própria implementação.
Use a static palavra-chave para declarar um evento como um evento estático. Eventos estáticos estão disponíveis 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.
Use a virtual palavra-chave para marcar um evento como um evento virtual. Classes derivadas podem substituir o comportamento do evento usando a override palavra-chave. Para obter mais informações, consulte Herança. Um evento que substitui um evento virtual também pode ser sealed, o que especifica que, para classes derivadas, ele não é mais virtual. Por fim, um evento pode ser declaradoabstract, o que significa que o compilador não gera os add blocos do acessador de eventos.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 de C#.