[英]C# passing Object from List<T> as parameter
我有一个列表,我在其中存储一些值。 我定义了一个事件,该事件应弹出并将该列表中的最后一个对象返回其EventArgs-Class-Constructor。
但是当事件被触发时,我在这行得到一个System.NullException
:
OnID(this, new OnIDEventArgs(ID_List.Last()));
我试图将最后一个ID对象传递给OnIDEventArgs-Constructor。 为什么这是NullException?
public delegate void EventHandler(object sender, OnIDEventArgs e);
public event EventHandler OnID;
IDs result = ID_List.FirstOrDefault(x => x.TID == tid_value);
if (result != null)
{ //stuff }
else {
ID_List.Add(new IDs
{
TID = tid_value,
CENTID = centid_value,
IDCount = 1
});
OnID(this, new OnIDEventArgs(ID_List.Last())); //System.NullException comes up here
}
ID类
public class IDs
{
public string TID { get; internal set; }
public string CENTID { get; internal set; }
public int IDCount { get; internal set; }
}
EventArgs类
public class OnIDEventArgs : EventArgs
{
public string LastTID { get; private set; }
public string LastCENTID { get; private set; }
public int IDCount { get; private set; }
public OnIDEventArgs(IDs result)
{
this.LastTID = result.TID;
this.LastCENTID = result.CENTID;
this.IDCount = result.IDCount;
}
}
这可能是由于没有任何内容订阅OnID
事件,因此OnID
委托为null,因此对其调用Invoke
将引发NRE。
为了避免这种情况,只需先检查OnID
是否为null:
if (OnID != null) {
OnID(this, new OnIDEventArgs(ID_List.Last()))
}
要么:
OnID?.Invoke(this, new OnIDEventArgs(ID_List.Last())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.