我已经看到了在 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);
}
}
对我来说,似乎一种样式检查“事件”是否为空,而第二种样式检查委托是否为空。但是,我的理解是事件只是委托的一个实例,所以我想知道这两种编写代码的方式是否有任何优势。如果是这样,请解释一下。提前致谢。