La mia comprensione delle azioni in C# è che sono solo una versione specifica di un delegato, vale a dire una senza parametri e nessun tipo di ritorno.Perché è legale invocare un'azione senza averla prima assegnata a qualcosa?
Se creo una classe come questa ...
class TrainSignal
{
public delegate void TrainsAComing();
public void HerComesATrain()
{
TrainsAComing();
}
}
... non si compila visto che non ho creato un'istanza del delegato. Tuttavia, se si sostituisce la definizione di delegato con quella di un azione come qui di seguito compila:
class TrainSignal
{
public Action TrainsAComing;
public void HerComesATrain()
{
TrainsAComing();
}
}
Ho pensato che forse che forse un'azione è statico o qualcosa del genere (consentendo in tal modo noi chiamiamo con il suo nome, senza istanziare esso) ma non sembra essere il caso.
Qualcuno può spiegare perché il secondo blocco di codice è legale?