UPDATE: in modern versions of C#, the recommended pattern to use is to leave it as null and use the ?.
operator:
event Action<Foo> foo; // leave it as null as the default
// ...
foo?.(new Foo());
In older versions of C#, the reason for this pattern could be that the default value of an event
field is null
. This requires the use of a null-check every-time you want to raise the event - calling foo()
on an uninitialised event
field would result in a NullReferenceException
. It's more convenient to just give it a sensible default value like a no-op, that way you can raise the event directly without having to use a wrapper method or anything.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…