C# 单击时创建对象时的空指针
当我添加到header.headerItems.add(d2)时,我一直有空指针异常;其中我的headerItems是一个可观察的类型数据集合 谁能告诉我这是为什么C# 单击时创建对象时的空指针,c#,wpf,C#,Wpf,当我添加到header.headerItems.add(d2)时,我一直有空指针异常;其中我的headerItems是一个可观察的类型数据集合 谁能告诉我这是为什么 private void addData(Header header) { Data d2 = new Data("pol"); header.headerItems.Add(d2); } 我调用此方法的方法如下所示。其中报头是数据包类的一部分 addData(packet.header);
private void addData(Header header)
{
Data d2 = new Data("pol");
header.headerItems.Add(d2);
}
我调用此方法的方法如下所示。其中报头是数据包类的一部分
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; }
}
}
参数头可能为空。 正如代码所示,现在我们不知道为什么参数头是空的 使用调试器检查packet.header是否为null,如果为null,请检查原因 可能的原因是,您忘记在构造函数中初始化它。 其他可能的原因是,您忘记在某处设置标头的值 其他可能的原因是header.headerItems。 如果header不为null,则headerItems可能为null。 检查它,检查它是否在头构造函数中正确初始化,或者它必须初始化的位置 为什么不使用调试器?
通过调试器,您可以看到每个变量的状态。参数头可能为空。 正如代码所示,现在我们不知道为什么参数头是空的 使用调试器检查packet.header是否为null,如果为null,请检查原因 可能的原因是,您忘记在构造函数中初始化它。 其他可能的原因是,您忘记在某处设置标头的值 其他可能的原因是header.headerItems。 如果header不为null,则headerItems可能为null。 检查它,检查它是否在头构造函数中正确初始化,或者它必须初始化的位置 为什么不使用调试器?
通过调试器,您可以看到每个变量的状态。问题在于您访问空对象(标题)的字段。按以下步骤做
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);
}
问题是您正在访问空对象(标头)的字段。按以下步骤做
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);
}
您是否确保已初始化
数据包.标头
?价值从何而来?如果您需要更多帮助,请提供更多信息,因为我们不知道任何其他信息。也许你应该发布一部分信息包类。哦,我忘了包括它的意思。如上所述进行编辑。是的,该头已经初始化。然后检查头项是否已初始化。是否尝试使用调试器单步执行代码?异常将包含堆栈跟踪,这将是开始查找的最佳位置。您是否确保已初始化packet.header
?价值从何而来?如果您需要更多帮助,请提供更多信息,因为我们不知道任何其他信息。也许你应该发布一部分信息包类。哦,我忘了包括它的意思。如上所述进行编辑。是的,该头已经初始化。然后检查头项是否已初始化。是否尝试使用调试器单步执行代码?异常将包含一个堆栈跟踪,这将是开始正确查找的最佳位置,因为我们没有代码应该做什么的规范,这也是允许的:)lol@SalvatorePreviti要求超出了想象。完全基于假设。@UnhandledException lol:)是的,你对这个假设更不满意,就像在网上玩扑克:)完全随机:)lol。是的,因为我们没有代码应该做什么的规范,这也是允许的:)lol@SalvatorePreviti要求超出了想象。完全基于假设。@UnhandledException lol:)是的,你对这个假设更感兴趣,就像在网上打扑克一样:)完全随机:)lol。