Qualcuno (diciamo alle prime armi con .NET) si potrebbe chiedere dove sta
l'implementazione di un evento di un'interfaccia, vista la sintassi C#:
interface
IFoo
{
event
EventHandler Bar;
}
class
Foo : IFoo
{
public
event
EventHandler
Bar;
}
Sembra che la classe Foo non implementi un bel nulla, e invece, con
questa sintassi, noi in realtà accettiamo l'implementazione di default
dei metodi add_Bar e remove_Bar, che la scriverà per noi il
compilatore (vedi il codice IL corrispondente). Meno confusione si crea
quando scegliamo di definire esplicitamente l'evento nella classe Foo;
lì i metodi delle funzioni di accesso add e remove tolgono ogni
dubbio sull'implementazione dell'evento.