Зачем здесь при генерации события применяется this? - C#

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

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

Здравствуйте! Подскажите пожалуйста , не пойму почему this применяется в строке 20 ( программа рабочая ) Впечатление , что просто от лампочки его применили, а как это понять не знаю. //Листинг 10.2. Оповещение наблюдателей с помощью делегата
using System;
 namespace ConsoleApplicationl
 {
    public delegate void Del(object о); //  объявление  делегата

    class Subj                               //  класс-источник
    {
        Del dels;           //  объявление  экземпляра  делегата
        public void Register(Del d)     //  регистрация делегата
        {
            dels += d;
        }

        public void OOPS()  //  что-то  произошло
        {
            
            Console.WriteLine("OOPS!");
            if (dels != null)  dels(this);  //  оповещение  наблюдателей
        }
     }       

    class ObsA                              //  класс наблюдатель
    {
        public void Do(object о)    //  реакция на событие источника
        {
            Console.WriteLine("Вижу, что OOPS!");
        }
    }
 
    class ObsB                              //  класс-наблюдатель
    {
        public static void See(object о)    //  реакция на событие источника
        {
            Console.WriteLine("Я тоже вижу, что OOPS!");
        }
    }
 
    class Classl
    {
       static void Main()
       {
           Subj s = new Subj();        // объект  класса-источника 
 
           ObsA o1 = new ObsA();       // объекты 
           ObsA o2 = new ObsA();       // класса-наблюдателя 
 
           s.Register(new Del(o1.Do));   // регистрация  методов   
           s.Register(new Del(o2.Do));   // наблюдателей  в  источнике 
           s.Register(new Del(ObsB.See)); // ( экземпляры  делегата  )
 
           s.OOPS();        //  инициирование  события

           Console.ReadKey();
 
        }
     }
 }

Решение задачи: «Зачем здесь при генерации события применяется this?»

textual
Листинг программы
public void OOPS()  //  что-то  произошло
        {
 
            Console.WriteLine("OOPS!");
            if (dels != null) dels.Invoke(new object());  //  оповещение  наблюдателей
        }

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


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

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

12   голосов , оценка 4.25 из 5
Похожие ответы