Observer pattern implemented in C# with delegates?

c#, delegates, design-patterns, events, observer-pattern

Solution

You are correct. An event is simply a delegate with some slightly different functionality. All of the observer pattern can be implemented with delegates without ever touching the `event` keyword.

You may be interested then, in what the "event" keyword actually brings to the table.

- Events can be part of an interface, whereas regular delegate field cannot

- Events cannot be invoked by outside classes, but regular delegates can

- Events have additional accessors (add and remove) that you can override and provide custom functionality for

Edit: Here's a great writeup with IL code comparison between events and delegates. (Hint: it's pretty much the same).

Problem

There is a question already answered which is In C#, isn't the observer pattern already implemented using Events? It asks if the observer pattern is already implemented in c# using events. While I get the events and observer pattern, isn't the observer pattern really just delegates and events is a further implementation?

Original source