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

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

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

Здравствуйте! Хотелось бы разобраться в событиях исключительно на примере делегатов. Но вот вопрос, ожидаю на выходе: "Metod1:Сообщение для подписчика" "Metod2:Сообщение для подписчика" и т.д. а получаю просто: "Metod1:" "Metod2:" "Metod3:" Может кто подскажет в чем дело? или так и должно быть, пример это не мой, но с моими модификациями незначительными. И вообще буду рада, если кто-то по этому примеру даст хорошее объяснение) Заранее благодарю!
Листинг программы
  1. delegate void MYDELEGATE(string msg);
  2. namespace ConsoleApplication1
  3. {
  4. //класс издатель
  5. class CLASS_ISDATEL
  6. {
  7. MYDELEGATE podpishik;
  8. //метод для регистрации подписчика
  9. public void Add_podpishik(MYDELEGATE podp)
  10. {
  11. if (podpishik == null) podpishik = podp;
  12. else podpishik = (MYDELEGATE)Delegate.Combine(podpishik, podp);
  13. }
  14. //метод для удаления подписчика
  15. public void Remove_podpishik(MYDELEGATE podp)
  16. {
  17. if (podpishik != null)
  18. podpishik = (MYDELEGATE)Delegate.Remove(podpishik, podp);
  19. }
  20. //метод для генерация события
  21. public void MYEvent()
  22. {
  23. //если делегат ссылается хотя бы на один метод, то вызываем его
  24. if (podpishik != null)
  25. {
  26. podpishik("Сообщение для подписчика");
  27. }
  28. }
  29. }
  30. class TEST
  31. {
  32. //обработчик события 1
  33. public static void Method1(string msg)
  34. {
  35. Console.WriteLine("Method1: ", msg);
  36. }
  37. //обработчик события 2
  38. public static void Method2(string msg)
  39. {
  40. Console.WriteLine("Method2: ", msg);
  41. }
  42. //обработчик события 3
  43. public static void Method3(string msg)
  44. {
  45. Console.WriteLine("Method3: ", msg);
  46. }
  47. static void Main(string[] args)
  48. {
  49. Console.WriteLine("*** Делегаты и События ***");
  50. //создаем делегаты
  51. MYDELEGATE dg1 = Method1;
  52. MYDELEGATE dg2 = Method2;
  53. MYDELEGATE dg3 = Method3;
  54. //создаем экземпляр класса-издателя
  55. CLASS_ISDATEL objectIsdatel = new CLASS_ISDATEL();
  56. //регистрация подписчиков
  57. objectIsdatel.Add_podpishik(dg1);
  58. objectIsdatel.Add_podpishik(dg2);
  59. objectIsdatel.Add_podpishik(dg3);
  60. //генерируем событие
  61. objectIsdatel.MYEvent();
  62. Console.ReadLine();
  63. //удаляем подписчиков
  64. objectIsdatel.Remove_podpishik(dg3);
  65. Console.WriteLine("удаление подписчика 3");
  66. objectIsdatel.MYEvent();
  67. objectIsdatel.Remove_podpishik(dg2);
  68. Console.WriteLine("удаление подписчика 2");
  69. objectIsdatel.MYEvent();
  70. objectIsdatel.Remove_podpishik(dg1);
  71. Console.WriteLine("удаление подписчика 1");
  72. objectIsdatel.MYEvent();
  73. Console.ReadLine();
  74. }
  75. }
  76. }

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

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

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


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

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

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

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

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

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