C# · Intermediário · Inglês · Técnico
event
Membro que expõe uma notificação baseada em delegate: outros objetos se inscrevem com += e -=, mas só o dono do evento pode dispará-lo.
Onde usar
É o padrão publish/subscribe do C#; botões de UI, FileSystemWatcher e INotifyPropertyChanged usam eventos. O erro clássico é esquecer o -= e manter o assinante vivo, causando vazamento de memória.
Em código
var c = new Contador();
c.Mudou += () => Console.WriteLine("mudou");
c.Inc();
class Contador {
public event Action? Mudou;
public void Inc() => Mudou?.Invoke();
}Exemplos
Subscribe to the event and don't forget to unsubscribe.
Inscreva-se no evento e não esqueça de cancelar a inscrição.
Only the class that declares the event can raise it.
Só a classe que declara o evento pode dispará-lo.
Cuidado
Não dispare o evento sem checar null: use Mudou?.Invoke(...) para evitar NullReferenceException quando ninguém se inscreveu.
Sinônimos
evento