using System;
using System.Collections.Generic;
public class Program
{
public class NumberList
{
private List numbers = new List();
// Define an event
public event EventHandler NumberAdded; // same as delegate (object sender, TEventArgs e)
public void AddNumber(int number)
{
numbers.Add(number);
OnNumberAdded(number); //broadcast event
}
protected virtual void OnNumberAdded(int number) // Event generator function
{
NumberAdded?.Invoke(this, number);
}
}
public class NumberLogger
{
public void Subscribe(NumberList numberList) // Event registration
{
numberList.NumberAdded += OnNumberAdded;
}
public void Unsubscribe(NumberList numberList) // Cancel event registration
{
numberList.NumberAdded -= OnNumberAdded;
}
private void OnNumberAdded(object sender, int number) //Event handler execution function
{
Console.WriteLine($"Number added: {number}");
}
}
public static void Main(string[] args)
{
NumberList numberList = new NumberList();
NumberLogger logger = new NumberLogger();
logger.Subscribe(numberList); // event registration
// broadcast events adding numbers. now when added will execute the event handler function to notify the newly added number
numberList.AddNumber(10);
numberList.AddNumber(20);
// unsubscribe to the event
logger.Unsubscribe(numberList);
// when adding a new number will not execute the event handler function
numberList.AddNumber(30);
Console.Read();
}
}
Event In C#
August 29, 2023
0
Tags
Share to other apps