В чем принципиальная разница между делегатами и событиями - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д