イベントは常にデリゲートに関連付けられていることを知っています。しかし、私はイベントの中心的な使用法をいくつか見逃しており、それを理解しようとしています.
以下のように簡単なイベント プログラムを作成しましたが、問題なく動作します。
namespace CompleteRef3._0
{
delegate void someEventDelegate();
class EventTester
{
public event someEventDelegate someEvent;
public void doEvent()
{
if (someEvent != null) someEvent();
}
}
class Program
{
static void EventHandler1()
{
Console.WriteLine("Event handler 1 called..");
}
static void EventHandler2()
{
Console.WriteLine("Event handler 2 called..");
}
static void EventHandler3()
{
Console.WriteLine("Event handler 3 called..");
}
static void Main(string[] args)
{
EventTester evt = new EventTester();
evt.someEvent += EventHandler1;
evt.someEvent += EventHandler2;
evt.someEvent += EventHandler3;
evt.doEvent();
Console.ReadKey();
}
}
}
イベント宣言をデリゲートに置き換えました。つまり、public event someEventDelegate someEvent;という行を置き換えました。someEventDelegateでsomeEvent; 上記のプログラムで、それでも同じ結果が得られます。さて、デリゲートだけが達成できるのに、なぜイベントを使用する必要があるのか、私は混乱しました。イベントの実際の用途は何ですか?
イベントのない変更されたプログラムは次のとおりです-
namespace CompleteRef3._0
{
delegate void someEventDelegate();
class EventTester
{
someEventDelegate someEvent;
public void doEvent()
{
if (someEvent != null) someEvent();
}
}
class Program
{
static void EventHandler1()
{
Console.WriteLine("Event handler 1 called..");
}
static void EventHandler2()
{
Console.WriteLine("Event handler 2 called..");
}
static void EventHandler3()
{
Console.WriteLine("Event handler 3 called..");
}
static void Main(string[] args)
{
EventTester evt = new EventTester();
evt.someEvent += EventHandler1;
evt.someEvent += EventHandler2;
evt.someEvent += EventHandler3;
evt.doEvent();
Console.ReadKey();
}
}
}