In this understanding C# events tutorial, I will explain how delegates are the foundation for C# events and show the two primary delegates that Microsoft has given us for creating our own events. I will also show you how to subscribe to your own events and even pass data back to the event handlers.
Understanding C# Events:
Every single event in .NET, whether Microsoft created it or if it was created by someone else, is based on a .NET delegate. Delegates are one of the five types of types included with .NET – class, structure, interface, enumeration, and delegate.
At its foundation, delegates do two things:
- When created, it points to a method (instance or static) in a container (class or structure). For events, it points to an event hander method.
- It defines exactly the kind of methods that it can point to, including the number and types of parameters and also the return type.
Understanding C# Events:
Definition of a
Let’s assume we want to raise an event in the Adder class if the sum of the two numbers in Add() is a multiple of five (5). We can define an event based on the delegate. This event will be used to raise a notification to run event handlers assigned to it.
NOTE: All C# events in .NET are based on delegates.
NOTE: Wherever you want to raise an event, you must also define the event.
NOTE:You must never raise (publish) an event unless at least one object is listening (subscribing) to the event. In other words, the event must not equal null.
NOTE: A Microsoft Best Practice: All events should be defined starting with the word “On”.
Here are the two built-in delegates:
The first delegate is used simply to raise a notification, an event signifying that something happened. The second delegate allows you to return one or more values to the event handler method. It requires you to create an instance of a class that derives from the EventArgs class.
To modify our code to use the first built-in delegate, we can delete our delegate and change our C# event to use the EventHandler delegate. When we raise the event, we must follow along with the delegate definition and pass in the required parameter values. Note how we pass our current instance of adder for the first parameter (sender) and since we are not passing back any event arguments, we use EventArgs.Empty for “e”.
We also had to change our event handler method to follow the pattern of the delegate with (object sender, EventArgs e).
In order to use the other delegate and pass the grand total back to the event hander method, we first need to define a custom class called MultipleOfFiveEventArgs for passing back a custom value, such as Total. It must inherit from the EventArgs class.
Then we will need to define our event to use the other generic delegate which includes the custom EventArgs type, MultipleOfFiveEventArgs. We must also change how we raise the event. Finally, we change the event handler method to match the delegate.
Here is the complete code:
More Information To Consider
Xamarin – What Is It? And Creating A Blank App!
Custom Software Development And Is It Time To Consider Legacy Modernization?
The Fastest Way To Build Software Is “Right” The First Time!
Understanding your industry is one thing. Understanding the technology you are using is another. When you read studies that tell you that 75% of projects are doomed from the beginning, it has to make you pause before signing your name to the outcome.
Consider letting our proven professionals take a look at your project. They’ve seen what can go wrong and know how to avoid costly errors.
We build custom software from start to finish. We plug into your environment with the proven expertise you need for us to work independently or in co-development. And, we bring the soft-skills that make the task enjoyable, and the experience to leave your team stronger and ready to take over.
We Bring You…
Soft-Skills For A Winning Experience
Sometimes the most critical person in the room is the one with a calm voice and the knowledge to select the right words. Bringing a development team together or presenting a clear concept for stakeholders can make all the difference between success or failure. Intertech consultants are at the top of their field. They navigate challenging decisions, guide with a confident voice, and know when to get out of the way.
Intertech takes the worry out of custom software development.
How Can We Help You?
Turn-Key Custom Application Development Solutions Since 1991
Independent & Co-Development
Tom Salonek Founder & CEO