using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace DelegateEventDemo{ public delegate void AddEvent(object sender,EventArgs e); class DelegateHandler { public event AddEvent OnAdditionToList; public ArrayList al = new ArrayList(); public DelegateHandler() { // Registering the Changed method to event OnAdditionToList += new AddEvent(Changed); } public void OnListChanged(EventArgs e) { // Publish the event : Listening if (OnAdditionToList != null) OnAdditionToList(this, e); } private void Changed(object sender,EventArgs e) { // Notify the user Console.WriteLine("New element has been inserted into the list."); } public ArrayList Add(int num) { al.Add(num); // Fier the event it on occure OnListChanged(EventArgs.Empty); return al; } public ArrayList Get() { return al; } } class Program { static void Main(string[] args) { DelegateHandler dh = new DelegateHandler(); // Client side handling of event dh.OnAdditionToList += new AddEvent(ClientFunction); for (int i = 1; i <= 10; i++) dh.Add(i * 10); ArrayList al = dh.Get(); for (int i = 0; i < al.Count; i++) Console.WriteLine(al[i].ToString()); Console.ReadLine(); } public static void ClientFunction(object sender, EventArgs e) { Console.WriteLine("Client handler is called."); } }}