Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты - C#
Формулировка задачи:
Господа, скажите пожалуйста, для чего использовать ключевое слово event в объявлении события, если события - это те же самые делегаты ? Вроде все прекрасно можно реализовать и без event. По сути объявление поля события - это объявление переменной делегата, в которую в дальнейшем внедряются методы. И соответственно при вызове этого события происходит групповой вызов методов. Спасибо.
Решение задачи: «Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты»
textual
Листинг программы
public class TestClass
{
public Action SomeAction;
public event EventHandler MyEvent;
public void FireEvent()
{
MyEvent(this, new EventArgs());
}
}
class Program
{
static void Main(string[] args)
{
var tc = new TestClass();
tc.SomeAction += Method;
tc.SomeAction();
tc.SomeAction -= Method;
tc.SomeAction();
tc.MyEvent += MyEventHandler;
tc.FireEvent();
tc.MyEvent -= MyEventHandler;
tc.FireEvent();
Console.ReadKey(true);
}
private static void Method()
{
Console.WriteLine("I am a subscriber of delegate.");
}
private static void MyEventHandler(object obj, EventArgs e)
{
Console.WriteLine("I am a subscriber of event.");
}
}