我有一个包含另一个类的对象的类。 现在,我想使用父类的对象将值分配给内部类的对象的成员。
例如
public class DT_FLEQ
{
private DT_FLEQHeader headerField;
public DT_FLEQHeader Header
{
get
{
return this.headerField;
}
set
{
this.headerField = value;
}
}
}
DT_FLEQ FLEquipment = new DT_FLEQ();
FLEquipment.Header.FLTYP= "Value";
它引发错误:对象引用未设置为对象的实例。
为什么?
答案 0 :(得分:0)
如错误所述,错误发生是因为Header属性未初始化且为null。您需要在分配子属性之前初始化headerField实例。
private DT_FLEQHeader headerField = new DT_FLEQHeader();
一种实现方法是在如上所述声明变量时将其初始化。但是请注意,在第一次使用之前,您也可以在其他任何地方使用它。例如,在构造函数中。
public DT_FLEQ
{
headerField = new DT_FLEQHeader();
}
或在Header属性的Setter访问器中
public DT_FLEQHeader Header
{
get
{
return this.headerField;
}
set
{
if(this.headerField == null)
{
headerField = new DT_FLEQHeader();
}
this.headerField = value;
}
}
您也可以在分配FLTYP值之前对其进行初始化。例如,
FLEquipment.Header = new DT_FLEQHeader();
FLEquipment.Header.FLTYP= "Value";
重要的一点是,在为变量headerField赋值之前,需要对其进行初始化。
替代方法是创建DT_FLEQHeader的实例并将其分配给FLEquipment.Header。
var header = new DT_FLEQHeader();
header.FLTYP= "Value";
FLEquipment.Header = header;