我想知道在 c# 中事件的确切用途是什么。我仍在学习 c#,所以我可能遗漏了一些东西,但是否可以只使用委托。
在这个例子中,我编写了一个类,其方法从 0 到 2^64 计数,每次达到一千的倍数时都会引发一个事件。这是代码:
namespace EventDelegate
{
class Program
{
static void Main(string[] args)
{
EventRaiserClass _eventraiser = new EventRaiserClass();
_eventraiser.handler = SomeEventHandler;
_eventraiser.handler += AnotherEventHandler;
_eventraiser.Loop();
Console.Read();
}
static void SomeEventHandler(object sender, EventArgs args)
{
Console.WriteLine("Event raised");
}
static void AnotherEventHandler(object sendr, EventArgs args)
{
Console.WriteLine("Event raised (Another handler)");
}
}
public delegate void Handler(object sender, EventArgs args);
class EventRaiserClass
{
public Handler handler;
public void Loop()
{
for (long i = 0; i < Int64.MaxValue; i++)
{
if ((i % 1000) == 0)
{
EventArgs args = new EventArgs();
RaiseEvent(args);
System.Threading.Thread.Sleep(1000);
}
}
}
private void RaiseEvent(EventArgs args)
{
if (handler != null)
handler(this, args);
}
}
}
如果我将handler
委托变量声明为这样的事件,会有什么不同public event Handler handler
。
对不起,如果我有点含糊或遗漏了一些明显的东西,但我只是想知道在使用而不是仅仅使用委托时是否在幕后发生了其他事情,event
或者它是否只是为了便于阅读。