event (Referencia de C#)
Actualización: noviembre 2007
La palabra clave event se utiliza para declarar un evento en una clase de editor.
Ejemplo
El ejemplo siguiente muestra cómo declarar y generar un evento que utiliza EventHandler como tipo de delegado subyacente. Para obtener el ejemplo de código completo que muestra también cómo utilizar el tipo de delegado genérico EventHandler<TEventArgs> y cómo suscribirse a un evento y crear un método de controlador de eventos, vea Cómo: Publicar eventos que cumplan las directrices de .NET Framework (Guía de programación de 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.
SampleEvent(this, new SampleEventArgs("Hello"));
}
}
Los eventos son un tipo especial de delegado multidifusión que sólo se puede invocar desde dentro de la clase o estructura donde se declaran (la clase de editor). Si otras clases o estructuras se suscriben al evento, se llamará a sus métodos de controlador de eventos cuando la clase de editor genere el evento. Para obtener más información y ejemplos de código, vea Eventos (Guía de programación de C#) y Delegados (Guía de programación de C#).
Los eventos se pueden marcar como public, private, protected, internal o protectedinternal. Estos modificadores de acceso definen cómo los usuarios de la clase pueden tener acceso al evento. Para obtener más información, vea Modificadores de acceso (Guía de programación de C#).
Palabras clave y eventos
Las palabras clave siguientes se aplican a los eventos.
Palabra clave |
Descripción |
Para obtener más información |
---|---|---|
Hace que el evento esté siempre disponible para los llamadores, aunque no exista ninguna instancia de la clase. |
Clases estáticas y sus miembros (Guía de programación de C#) |
|
Permite que las clases derivadas reemplacen el comportamiento del evento mediante la palabra clave override. |
||
Especifica que el evento ya no es virtual para las clases derivadas. |
|
|
El compilador no generará los bloques de descriptor de acceso a eventos add y remove y, por tanto, las clases derivadas deben proporcionar su propia implementación. |
|
Un evento puede declararse como evento estático mediante la palabra clave static. Esto hace que el evento esté siempre disponible para los llamadores, aunque no exista ninguna instancia de la clase. Para obtener más información, vea Clases estáticas y sus miembros (Guía de programación de C#).
Un evento puede marcarse como virtual mediante la palabra clave virtual. Esto permite que las clases derivadas invaliden el comportamiento del evento mediante la palabra clave override. Para obtener más información, vea Herencia (Guía de programación de C#). Un evento que invalida un evento virtual también puede ser de tipo sealed, que especifica que ya no es virtual para las clases derivadas. Por último, un evento puede declararse como abstract, lo cual significa que el compilador no generará los bloques de descriptores de acceso de eventos add y remove. Por consiguiente, las clases derivadas deben proporcionar su propia implementación.
Especificación del lenguaje C#
Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.
1.6.6.4 Eventos
7.16.3 Asignación de eventos
10.8 Eventos
13.2.3 Eventos de interfaz
Vea también
Tareas
Cómo: Combinar delegados (delegados de multidifusión) (Guía de programación de C#)
Conceptos
Referencia
Modificadores (Referencia de C#)