Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Palabra
Un evento es un miembro que permite que un objeto desencadene notificaciones. Los usuarios de eventos pueden adjuntar código ejecutable para eventos proporcionando controladores de eventos. La palabra clave event declara un evento. El evento es de tipo delegado. Cuando un objeto desencadena un evento, este invoca a todos los controladores de eventos suministrados. Los controladores de eventos son instancias delegadas que se agregan al evento y se ejecutan cuando se genera el evento. Los usuarios de eventos pueden agregar o quitar sus controladores de eventos en un evento.
La documentación de referencia del lenguaje C# cubre la versión más reciente publicada del lenguaje C#. También contiene documentación inicial sobre las características de las versiones preliminares públicas de la próxima versión del lenguaje.
La documentación identifica cualquier característica introducida por primera vez en las últimas tres versiones del idioma o en las versiones preliminares públicas actuales.
Sugerencia
Para buscar cuándo se introdujo por primera vez una característica en C#, consulte el artículo sobre el historial de versiones del lenguaje C#.
En el ejemplo siguiente se muestra cómo declarar y generar un evento que usa EventHandler como el tipo de delegado subyacente. Para obtener el ejemplo de código completo, vea Cómo publicar eventos que cumplan las directrices de .NET. En este ejemplo se muestra el tipo de delegado genérico EventHandler<TEventArgs> , cómo suscribirse a un evento y crear un método de controlador 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"));
}
}
Los eventos son delegados de multidifusión que solo se pueden invocar desde dentro de la clase (o clases derivadas) o estructura donde se declaran (la clase publisher). Si otras clases o estructuras se suscriben al evento, se llama a sus métodos de controlador de eventos cuando la clase publisher genera el evento. Para más información y ejemplos de código, vea Eventos y Delegados.
Puede marcar eventos como public, private, protected, internal, , protected internalo private protected. Estos modificadores de acceso definen cómo los usuarios de la clase pueden obtener acceso al evento. Para obtener más información, consulte Modificadores de acceso.
A partir de C# 14, puede declarar eventos como partial. Los eventos parciales tienen una declaración que define y una declaración de implementación. La declaración de definición debe usar la sintaxis similar al campo. La declaración de implementación debe declarar los controladores add y remove.
Palabras clave y eventos
Las palabras clave siguientes se aplican a eventos.
-
static: hace que el evento esté disponible para los autores de llamadas en cualquier momento, incluso si no existe ninguna instancia de la clase . Para obtener más información sobre los eventos estáticos, vea Clases estáticas y miembros de clase estática. -
virtual: permite que las clases derivadas invaliden el comportamiento del evento mediante la palabra clave override . Para obtener más información sobre los eventos virtuales, consulte Herencia. -
sealed: especifica que para las clases derivadas ya no es virtual. -
abstract: el compilador no genera losaddbloques de descriptor de acceso de eventos yremovey, por tanto, las clases derivadas deben proporcionar su propia implementación.
Use la static palabra clave para declarar un evento como un evento estático. Los eventos estáticos están disponibles para los autores de llamadas en cualquier momento, incluso si no existe ninguna instancia de la clase . Para más información, vea Clases estáticas y sus miembros.
Use la virtual palabra clave para marcar un evento como un evento virtual. Las clases derivadas pueden invalidar el comportamiento del evento mediante la override palabra clave . Para obtener más información, vea Herencia. Un evento que reemplaza un evento virtual también puede ser sealed, que especifica que para las clases derivadas ya no es virtual. Por último, se puede declarar abstractun evento , lo que significa que el compilador no genera los add bloques de descriptor de acceso de eventos y remove . Por lo tanto, las clases derivadas deben proporcionar su propia implementación.
Especificación del lenguaje C#
Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.