#379 – Using the EventHandler Delegate for Events that Return No Data
August 1, 2011 4 Comments
When you add an event to a class, you can use any delegate you like for the event’s type. For example, you could based the event on a delegate that accepts a single parameter of type string:
public delegate void StringHandlerDelegate(string s); public event StringHandlerDelegate Barked;
It’s recommended, however, that you use the one of the following two preexisting types as the delegate type:
- EventHandler – for event that return no data
- EventHandler<TEventArgs> – for event that returns some data
Below is an example of an event that returns no data. The Dog.Barked event is raised when a Dog object barks.
// Declare the event public event EventHandler Barked; // Helper method that raises the event protected virtual void OnBarked() { if (Barked != null) Barked(this, null); } // In Bark method, call helper to raise the event public void Bark() { Bark("Woof"); OnBarked(); }