Event In C#

DevNotes
0

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();
    }
}

Post a Comment

0 Comments
Post a Comment (0)
To Top