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