Чем события лучше делегатов? - C#
Формулировка задачи:
Доброго времени суток господа, чем события лучше делегатов, чем лучше закомментированный вариант. Спасибо.
using System;
using System.Linq;
namespace LINQ_TEST_CS
{
class ClassCounter
{
public delegate void MethodContainer();
//public event MethodContainer onCount;
public MethodContainer OnCount;
public void Count()
{
for (int i = 0; i < 100; i++)
{
if (i == 71)
{
//onCount?.Invoke();
OnCount?.Invoke();
}
}
}
}
class Handler_I
{
public void Message()
{
Console.WriteLine("Пора действовать, ведь уже 71!");
}
}
class Handler_II
{
public void Message()
{
Console.WriteLine("Точно, уже 71!");
}
}
class Program
{
static void Main(string[] args)
{
ClassCounter counter = new ClassCounter();
Handler_I handler_I = new Handler_I();
Handler_II handler_II = new Handler_II();
//counter.onCount += handler_I.Message;
//counter.onCount += handler_II.Message;
counter.OnCount += handler_I.Message;
counter.OnCount += handler_II.Message;
counter.Count();
}
}
}Решение задачи: «Чем события лучше делегатов?»
textual
Листинг программы
using System;
namespace ConsoleApp789
{
class Program
{
static void Main(string[] args)
{
var foo = new Foo();
foo.Handler = null;
}
}
class Foo
{
public event EventHandler<EventArgs> Handler = (o, e) => { };
}
}