What is the relationship between delegates and event mechanisms in programming?
sobes.tech AI
Answer from AI
In C#, delegates and events are closely related and used to implement callback mechanisms and event subscription.
-
Delegate is a type that represents a reference to a method with a specific signature. Delegates allow storing and invoking methods dynamically.
-
Event is a special mechanism based on delegates that enables objects to subscribe to notifications about certain actions.
Relationship:
-
An event is declared based on a delegate, meaning the event is a 'wrapper' around a delegate that restricts access to calling methods (only within the class where the event is declared).
-
When the event occurs, the delegate inside the class is invoked, which calls all subscribed methods (event handlers).
Example:
public delegate void Notify(string message);
public class Publisher
{
public event Notify OnNotify;
public void RaiseEvent()
{
OnNotify?.Invoke("Event occurred");
}
}
public class Subscriber
{
public void HandleNotification(string msg)
{
Console.WriteLine(msg);
}
}
// Usage:
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.OnNotify += sub.HandleNotification;
pub.RaiseEvent(); // Will output: Event occurred
Thus, delegates serve as the foundation for events, providing the invocation of subscribed methods when an event occurs.