有人可以解释以下代码部分的含义:
private event UserChangedHandler m_UserChanged;
public event UserChangedHandler UserChanged
{
add
{
if (m_UserChanged != value)
{
m_UserChanged += value;
}
}
}
谢谢
最佳答案
add { }
是一种类似于get { }
的属性构造,除了在事件上添加作品。在将委托添加到事件时,您在此处定义自定义功能。
在这种情况下,此方法主体可防止连续重复(即,您不能连续两次注册相同的方法/处理程序)。
因此,在此示例中:
public void HandlerUserChanged(object o, UserChangedEventArgs args)
{
// some code
}
public void HandlerUserChanged2(object o, UserChangedEventArgs args)
{
// some code
}
后来:
UserChanged += HandleUserChanged;
UserChanged += HandleUserChanged;
UserChanged(this, new UserChangedEventArgs());
即使您注册了两次,方法
HandleUserChanged
也只会触发一次。正常事件(没有add { }
)将调用该函数两次。然而:
UserChanged += HandleUserChanged;
UserChanged += HandleUserChanged2;
UserChanged += HandleUserChanged;
UserChanged(this, new UserChangedEventArgs());
将允许
HandleUserChanged
触发两次,因为最后注册的处理程序永远不会被添加。事件的==运算符适用于LAST处理程序。 (感谢Matthew提请注意)