Как я понимаю, Event - это способ, позволяющий классу предоставлять клиентам делегаты для методов, которые должны вызываться при возникновении события. Когда происходит событие, вызывается делегат (ы), предоставленные ему его клиентами.
Но, как показано в следующем коде выше, указанная функциональность также может быть достигнута только делегатом, то есть без использования делегата.
class Program
{
static void Main(string[] args)
{
ListWithChangedEvent lwce = new ListWithChangedEvent();
lwce.delegateVariable = DelegateTestMethod;
lwce.Add("test");
Console.ReadLine();
}
public static void DelegateTestMethod(object sender, object e)
{
}
}
public delegate void ChangedEventHandler(object sender, object e);
public class ListWithChangedEvent : System.Collections.ArrayList
{
public override int Add(object value)
{
int result = base.Add(value);
if (delegateVariable != null)
delegateVariable(this, "");
return result;
}
public ChangedEventHandler delegateVariable;
}
Итак, мне было интересно, какие дополнительные функции предоставляет Events?