#1,158 – Events vs. Delegates, part I
August 12, 2014 2 Comments
You’ll typically define an event rather than using a public delegate. Although either method will work, events provide some benefits over using delegates directly.
Below, we define a delegate type and a Barked event of that type in a Dog class:
public delegate void DogDelegate(string dogName); public class Dog { public string Name { get; set; } public Dog(string name) { Name = name; } public event DogDelegate Barked = delegate { }; public void Bark() { Console.WriteLine("Woof"); Barked(Name); } }
We can now handle the event as follows:
static void Main(string[] args) { Dog d = new Dog("Bob"); d.Barked += d_Barked; d.Bark(); Console.ReadLine(); } static void d_Barked(string dogName) { Console.WriteLine(dogName + " just barked"); }
This code would all work the same if we simply removed the event keyword, making the delegate available to the client code. (See part II for more information).