【发布时间】:2013-08-04 07:47:09
【问题描述】:
我已经看到了在 C# 中触发事件的各种编码风格。 第一个样式包含以下内容:
-事件处理程序
public delegate void NumberReachedEventHandler(object sender,
NumberReachedEventArgs e);
-一个事件
public event NumberReachedEventHandler NumberReached;
-以及触发事件的方法
protected virtual void OnNumberReached(NumberReachedEventArgs e)
{
if(NumberReached != null)
{
NumberReached(this, e);
}
}
然而,第二种样式有不同的触发事件的方法:
protected virtual void OnNumberReached(NumberReachedEventArgs e)
{
NumberReachedEventHandler handler = NumberReached;
if(handler != null)
{
handler(this, e);
}
}
在我看来,一种样式检查“事件”是否为空,而第二种样式检查委托是否为空。但是,我的理解是事件只是委托的一个实例,所以我想知道这两种编写代码的方式是否有任何优势。如果是这样,请解释一下。提前致谢。
【问题讨论】:
标签: c# events delegates null handler