在单击创建对象时为空指针
本文关键字:空指针 创建对象 单击 | 更新日期: 2023-09-27 18:13:03
当我添加到header.headerItems.Add(d2)时,我一直有空指针异常;其中我的headerItems是Data类型的可观察集合
谁能告诉我这是为什么?
private void addData(Header header)
{
Data d2 = new Data("pol");
header.headerItems.Add(d2);
}
调用这个方法的my Method如下所示。其中header是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; }
}
}
My data class
public class Data
{
private String sDatavalue;
public Data(String datavalue)
{
this.sDatavalue = datavalue;
}
public string datavalue
{
get { return sDatavalue; }
set { sDatavalue = datavalue; }
}
}
问题是您访问空对象(标头)的字段。按如下操作
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);
}
参数头可能为空。正如代码,现在,我们不知道为什么参数头是空的。
使用调试器检查数据包。头文件为空,如果为空,检查原因。
可能原因,您忘记在构造函数中初始化它。其他可能的原因是,您忘记在某处设置header的值。
其他可能的原因,问题是header.headerItems。如果header不为空,headerItems可能为空。检查它,检查它是否在头构造函数中被正确初始化,或者在必须初始化的地方。
为什么不使用调试器?使用调试器,您可以看到每个变量的状态。