我在微软练习测试中遇到了这个问题,我很困惑。这是问题:
以下哪个 C# 代码示例
是引发事件的正确方式,
假设警报事件,
AlarmEventArgs 类,以及
AlarmEventHandler 委托已
宣布?
这是他们提供的“正确”答案:
AlarmEventArgs e = new AlarmEventArgs(1, 2);
AlarmEventHandler handler = Alarm;
if (handler != null)
{
handler(this, e);
}
然而,还有另一个似乎正确的答案。
AlarmEventArgs e = new AlarmEventArgs(1, 2);
if (Alarm!= null)
{
Alarm (this, e);
}
我个人总是使用第二种方法。它工作得很好。有人可以告诉我为什么我应该使用第一种方法而不是第二种方法吗?
在多线程环境中,事件处理程序可能会在分派事件时更新。为了避免这种情况,您可以在检查 null 并分派消息之前将处理程序分配给局部变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)