#384 – The Difference Between Delegates and Events
August 8, 2011 Leave a comment
Delegates are not the same thing as events in C#.
Delegates
- A delegate type defines a signature for a method (number and type of parameters and return type)
- A delegate instance is an instance of a delegate type that can refer to one or more methods
- Can add/remove handlers using the +=, -= operators
- Can invoke handlers by calling delegate instance like a method
Events
- Is a class member representing something that the class might notify calling code about
- Declared in the class like a field, whose type is a delegate type
- Wraps a private member variable that is a delegate instance
- Wraps private methods that add/remove methods to the delegate instance’s invocation list
- Client code can add/remove handlers using the +=, -= operators
- Client code can’t invoke directly
Basically, an event is a mechanism that uses a delegate to notify client code of something without exposing the delegate’s invocation list to the client.