Делегаты и события - C# (180223)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Хотелось бы разобраться в событиях исключительно на примере делегатов. Но вот вопрос, ожидаю на выходе: "Metod1:Сообщение для подписчика" "Metod2:Сообщение для подписчика" и т.д. а получаю просто: "Metod1:" "Metod2:" "Metod3:" Может кто подскажет в чем дело? или так и должно быть, пример это не мой, но с моими модификациями незначительными. И вообще буду рада, если кто-то по этому примеру даст хорошее объяснение) Заранее благодарю!
delegate void MYDELEGATE(string msg);
namespace ConsoleApplication1
{
    //класс издатель
    class CLASS_ISDATEL
    {
        MYDELEGATE podpishik;
        //метод для регистрации подписчика
        public void Add_podpishik(MYDELEGATE podp)
        {
            if (podpishik == null) podpishik = podp;
            else podpishik = (MYDELEGATE)Delegate.Combine(podpishik, podp);
        }
        //метод для удаления подписчика
        public void Remove_podpishik(MYDELEGATE podp)
        {
            if (podpishik != null) 
            podpishik = (MYDELEGATE)Delegate.Remove(podpishik, podp);
        }
        //метод для генерация события
        public void MYEvent()
        {
            //если делегат ссылается хотя бы на один метод, то вызываем его
            if (podpishik != null)
            {
                podpishik("Сообщение для подписчика");
 
            }
        }
    }
    class TEST
    {
        //обработчик события 1
        public static void Method1(string msg)
        {
            Console.WriteLine("Method1: ", msg);
            
        }
        //обработчик события 2
        public static void Method2(string msg)
        {
            Console.WriteLine("Method2: ", msg);
           
        }
        //обработчик события 3
        public static void Method3(string msg)
        {
            Console.WriteLine("Method3: ", msg);
           
        }
        static void Main(string[] args)
        {
            Console.WriteLine("*** Делегаты и События ***");
            //создаем делегаты
            MYDELEGATE dg1 = Method1;
            MYDELEGATE dg2 = Method2;
            MYDELEGATE dg3 = Method3;
 
            //создаем экземпляр класса-издателя
            CLASS_ISDATEL objectIsdatel = new CLASS_ISDATEL();
 
            //регистрация подписчиков
            objectIsdatel.Add_podpishik(dg1);
            objectIsdatel.Add_podpishik(dg2);
            objectIsdatel.Add_podpishik(dg3);
 
            //генерируем событие
            objectIsdatel.MYEvent();
            
            Console.ReadLine();
            //удаляем подписчиков
            objectIsdatel.Remove_podpishik(dg3);
            Console.WriteLine("удаление подписчика 3");
            objectIsdatel.MYEvent();
 
            objectIsdatel.Remove_podpishik(dg2);
            Console.WriteLine("удаление подписчика 2");
            objectIsdatel.MYEvent();
 
            objectIsdatel.Remove_podpishik(dg1);
            Console.WriteLine("удаление подписчика 1");
            objectIsdatel.MYEvent();
            Console.ReadLine();
        }
    }
}

Решение задачи: «Делегаты и события»

textual
Листинг программы
Console.WriteLine("Method1: {0}", msg);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5