public class Parent
{
Child child1;
public Parent()
{
child1.Name = "abc";
}
...
}
获取NullReferenceException。我认为Parent()构造函数首先调用Child()构造函数,以便稍后可以在Parent()构造函数中访问child1对象???
答案 0 :(得分:4)
您需要创建一个孩子的实例;要么在定义时初始化它:
Child child1 = new Child();
或者在Parent构造函数中:
public Parent(){
child1 = new Child();
child1.Name = "Andrew";
}
答案 1 :(得分:2)
父类的构造函数不会为其成员调用构造函数。当成员是引用时,它只是设置为null。您需要通过调用child1 = new Child
答案 2 :(得分:1)
成员不是隐式构建的。它们使用默认值初始化(即null
用于引用类型成员),这就是您的child1
成员为空的原因。
您需要创建child1
的实例:
public Parent
{
child1 = new Child();
}
在旁注中,我认为您对继承类的构造函数调用规则感到困惑。如果您的Child
类继承了您的Parent
类,则将隐式调用Parent
类'默认(即无参数)构造函数(如果它存在):
class Parent
{
protected string member;
public Parent()
{
member = "foo";
}
}
class Child : Parent
{
public Child()
{
// member is foo here; Parent() is implicitly called
}
}