The above answer is dramatically wrong, I have to post the answer. Someone is mistaken on the Internet, still can not sleep.
It is convenient, but it does not come for free. The compiler must generate a class for the anonymous method, and the JIT compiler must generate code for it. And this code is always executed when you raise an event, regardless of whether the client has signed the event handler or not. Zero-check code is also always executed, but it requires much less code and time.
It is not a lot of code and a lot of time. Zero checking takes two machine code instructions and must be performed in a single CPU cycle. An anonymous delegate takes about an order of magnitude longer, but that's not so much on a modern machine. Personally, I'm too old to be so wasteful that the two options are my choice.
Not least because it is a standard template, everyone recognizes it.
source share