Event declaration with assignment to empty delegate

c#

Solution

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.

Problem

I have question on a piece of code I often stumble across online. For example ``` public static event Action<Foo> foo = delegate{ }; ``` I got the left hand side of the declaration. But the right hand side is confusing. What is the point in assigning the event to a delegate with empty parenthesis?

Original source