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

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

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

Здравствуйте! Подскажите пожалуйста , не пойму почему this применяется в строке 20 ( программа рабочая ) Впечатление , что просто от лампочки его применили, а как это понять не знаю. //Листинг 10.2. Оповещение наблюдателей с помощью делегата
Листинг программы
  1. using System;
  2. namespace ConsoleApplicationl
  3. {
  4. public delegate void Del(object о); // объявление делегата
  5.  
  6. class Subj // класс-источник
  7. {
  8. Del dels; // объявление экземпляра делегата
  9. public void Register(Del d) // регистрация делегата
  10. {
  11. dels += d;
  12. }
  13.  
  14. public void OOPS() // что-то произошло
  15. {
  16. Console.WriteLine("OOPS!");
  17. if (dels != null) dels(this); // оповещение наблюдателей
  18. }
  19. }
  20.  
  21. class ObsA // класс наблюдатель
  22. {
  23. public void Do(object о) // реакция на событие источника
  24. {
  25. Console.WriteLine("Вижу, что OOPS!");
  26. }
  27. }
  28. class ObsB // класс-наблюдатель
  29. {
  30. public static void See(object о) // реакция на событие источника
  31. {
  32. Console.WriteLine("Я тоже вижу, что OOPS!");
  33. }
  34. }
  35. class Classl
  36. {
  37. static void Main()
  38. {
  39. Subj s = new Subj(); // объект класса-источника
  40. ObsA o1 = new ObsA(); // объекты
  41. ObsA o2 = new ObsA(); // класса-наблюдателя
  42. s.Register(new Del(o1.Do)); // регистрация методов
  43. s.Register(new Del(o2.Do)); // наблюдателей в источнике
  44. s.Register(new Del(ObsB.See)); // ( экземпляры делегата )
  45. s.OOPS(); // инициирование события
  46.  
  47. Console.ReadKey();
  48. }
  49. }
  50. }

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы