Los eventos (events) en C#
En esta lección vas a declarar un evento, suscribir un manejador y lanzar el evento cuando se produce un cambio.
Introducción
Un evento (event) permite que un objeto avise a otros objetos cuando ocurre algo, según el modelo de publicador y suscriptor (publisher/subscriber). Es un mecanismo habitual en la programación de interfaces, por ejemplo cuando el usuario hace clic en un botón.
La clase Counter declara el evento ThresholdReached. En Main, el operador += suscribe una lambda para manejar el evento. Cuando se llama a ReachThreshold(), el operador ?. solo lanza el evento si hay al menos un suscriptor. Desde fuera solo se puede suscribir o cancelar la suscripción: solo la clase Counter puede lanzar el evento.
Ejemplo de C# ejecutable
using System;
class Counter
{
public event EventHandler? ThresholdReached;
public void ReachThreshold() => ThresholdReached?.Invoke(this, EventArgs.Empty);
}
class Program
{
static void Main()
{
var counter = new Counter();
counter.ThresholdReached += (_, _) => Console.WriteLine("Threshold reached");
counter.ReachThreshold();
}
}
Threshold reachedPractica con el depurador
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos