Events in C#
To define an event in C#, you need to declare a delegate type that specifies the signature of the event handlers, and then create an event based on that delegate. Here's an example that demonstrates the usage of events:
c#
using System;// Declare a delegate type for the event handlers
public delegate void EventHandlerDelegate(string message);
// Publisher class
public class Publisher
{
// Declare an event based on the delegate type
public event EventHandlerDelegate OnEventOccurred;
public void DoSomething()
{
// Perform some operation
// Raise the event
OnEventOccurred?.Invoke("Event occurred!");
}
}
// Subscriber class
public class Subscriber
{
public void HandleEvent(string message)
{
// Event handler code
Console.WriteLine("Event handled: " + message);
}
}
// Main program
public class Program
{
public static void Main()
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
// Subscribe to the event
publisher.OnEventOccurred += subscriber.HandleEvent;
// Trigger the event
publisher.DoSomething();
}
}
In the example above, we have a Publisher class that declares an event called OnEventOccurred. The event is based on the EventHandlerDelegate delegate type, which specifies the signature of the event handlers.
The Publisher class has a method DoSomething() which performs some operation and then raises the event by invoking the OnEventOccurred event. The ?. null conditional operator is used to ensure that the event is only invoked if there are subscribers.
The Subscriber class defines a method HandleEvent() that matches the signature of the event handler delegate. This method represents the code that will be executed when the event occurs.
In the Main() method of the program, we create instances of the Publisher and Subscriber classes. We then subscribe the HandleEvent() method of the Subscriber object to the OnEventOccurred event of the object using the += operator.
Finally, we call the DoSomething() method of the Publisher object, which triggers the event. As a result, the event handler method HandleEvent() of the Subscriber object is invoked, and the message "Event handled: Event occurred!" is printed to the console.
Events allow objects to communicate in a loosely coupled manner. Publishers don't need to know anything about the subscribers, and subscribers can dynamically subscribe or unsubscribe from events based on their requirements. This decoupling improves code flexibility.
0 Comments