#379 – Using the EventHandler Delegate for Events that Return No Data
August 1, 2011 Leave a comment
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();
}