В чем принципиальная разница между делегатами и событиями - C#
Формулировка задачи:
Ребят, кто-нибудь может объяснить мне в чем принципиальная разница между делегатами и событиями? Зачем вообще нужны события, если аналогичный функционал я могу обеспечить и с помощью делегатов? Что-то я суть не ухватываю никак. Вот пример, допустим:
Совершенно не пойму зачем их сделали, если вместо них можно использовать делегаты. Естественно, здравый смысл подсказывает мне, что это все не просто так, и какое-то их функциональное предназначения я упускаю. Но что - пока не пойму. У Шилдта как-то поверхностно это все рассмотрено.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Events_or_Delegates_Project
- {
- //Классы для способа с делегатом
- delegate int Method(int a, int b);
- class X
- {
- public Method method;
- public int OnSomeEvent(int a, int b)
- {
- return method(a, b);
- }
- }
- class Y
- {
- public static int Sum(int a, int b)
- { Console.WriteLine(a+b); return a+b; }
- public static int Multy(int a, int b)
- { Console.WriteLine(a*b); return a*b; }
- }
- //Классы для способа с событием
- delegate void Method2();
- class XX
- {
- public event Method2 method;
- public void OnSomeEvent()
- {
- method();
- }
- }
- class YY
- {
- public static void Sum()
- { Console.WriteLine("Sum"); }
- public static void Multy()
- { Console.WriteLine("Multy"); }
- }
- //Проверяем оба способа
- class Program
- {
- static void Main(string[] args)
- {
- //вот так мы работаем с делегатом
- X x = new X();
- x.method = Y.Sum;
- x.method += Y.Multy;
- x.OnSomeEvent(4, 2);
- Console.WriteLine();
- //вот так мы работаем с событием
- XX xx = new XX();
- xx.method += YY.Sum;
- xx.method += YY.Multy;
- xx.OnSomeEvent();
- Console.WriteLine();
- }
- }
- }
Решение задачи: «В чем принципиальная разница между делегатами и событиями»
textual
Листинг программы
- xx.Method();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д