我有一个数据结构类,它是一个更大的数据/状态类的子类。
当包含的数据发生变化时,内部数据结构会触发一个事件。此事件由较大的数据/状态类使用。然后数据/状态类触发它自己的事件,以便它可以将附加信息传递给下一个事件处理程序。
Public class Data
{
//properties and objects go here
public int Count
{
get { return _count; }
internal set
{
//if the count grew simply set _count
if (value != _oldCount)
{
_oldCount = _count;
_count = value;
}
//if the count shrank then set the count and trigger an event if the count is under 100
else
{
_oldCount = _count;
_count = value;
if (_count < 100)
{
CountChanged(this, new EventArgs());
}
}
}
}
public event EventHandler CountChanged;
}
上述事件由此事件处理程序消费
Data.CountChanged += new EventHandler(DataCountChanged);
private void DataCountChanged(object sender, EventArgs e)
{
DataRemoved(this, e); //Handle the old event and trigger a new event to pass along more information
}
public event EventHandler DataRemoved;
最后,第二个事件应该由另一个事件处理程序处理以完成一些工作。不幸的是,触发第二个事件的调用通常会因 NullReferenceException 而失败。为什么?
----编辑---- 我知道检查 Null 将防止异常。令人困惑的是为什么这个事件首先是 Null =D