当我添加到header.headerItems.Add(d2)时,我一直有空指针异常;其中我的headerItems是Data
类型的可观察集合任何人都可以告诉我这是为什么?
private void addData(Header header)
{
Data d2 = new Data("pol");
header.headerItems.Add(d2);
}
调用此方法的方法如下所示。其中头部是Packet类的一部分。
addData(packet.header);
我的标题类
public class Header
{
private ObservableCollection<Data> headerCollection;
private String sheadervalue;
public Header(String headervalue)
{
sheadervalue = headervalue;
}
public ObservableCollection<Data> headerItems
{ get { return headerCollection; } }
public string headervalue
{
get { return sheadervalue; }
set { sheadervalue = headervalue; }
}
}
我的数据类
public class Data
{
private String sDatavalue;
public Data(String datavalue)
{
this.sDatavalue = datavalue;
}
public string datavalue
{
get { return sDatavalue; }
set { sDatavalue = datavalue; }
}
}
答案 0 :(得分:3)
问题是您访问空对象(标题)的字段。如下所示
private void addData(Header header)
{
if(null == header)
{
// if header null what you can do... e.g log header is null
return;
}
if(null == header.headerItems)
{
header.headerItems = ....; // create new header item collection
}
Data d2 = new Data("pol");
header.headerItems.Add(d2);
}
答案 1 :(得分:2)
参数标头可能为空。 正如代码那样,我们现在还不知道为什么参数头为空。
检查调试器是否为packet.header为空,如果是,请检查原因。
可能的原因,您忘记在构造函数中初始化它。 其他可能的原因,你忘了在某处设置标题的值。
其他可能的原因,问题是header.headerItems。 如果header不为null,则headerItems可以为null。 检查它,检查它是否在头构造函数中正确初始化或必须初始化的位置。
为什么不使用调试器? 使用调试器,您可以看到每个变量的状态。