Gli eventi (event) in C#
In questa lezione dichiarerai un evento, registrerai un gestore e lancerai l'evento quando qualcosa cambia.
Introduzione
Un evento (event) permette a un oggetto di avvisare altri oggetti quando succede qualcosa, secondo il modello editore e abbonato (publisher/subscriber). È un meccanismo molto comune nelle interfacce grafiche, per esempio quando l'utente preme un pulsante.
La classe Counter dichiara l'evento ThresholdReached. In Main, l'operatore += registra una lambda per gestire l'evento. Quando viene chiamato ReachThreshold(), l'operatore ?. lancia l'evento solo se c'è almeno un abbonato. Dall'esterno ci si può solo registrare o annullare la registrazione, mentre lanciare l'evento può farlo solo la classe Counter.
Esempio C# eseguibile
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 reachedEsercitati con il debugger
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
Tutte le sfide