将类添加到另一个类属性 public List<Class> ListOfThatClass { get; set; }[复制]

Add class to another class property public List<Class> ListOfThatClass { get; set; } [duplicate]

提问人:Misa Misic 提问时间:12/7/2018 最后编辑:ricMisa Misic 更新时间:12/7/2018 访问量:42

问:

头等舱

 class Tasks
{
    public List<Ck> listCk { get; set; }
}

二等舱

class Ck
{
    public string CkName { get; set; }
    public string CkConentent { get; set; }
}

现在我想将 Ck 添加到 Tasks.listCk

Tasks t = new Tasks();
Ck ck = new Ck();
ck.CkName = "s1";
ck.CkConentent = "s2";

t.listCk.Add(ck); //Here I get NullReferenceException

System.NullReferenceException:“对象引用未设置为对象的实例。 MojDevnik.Tasks.listaCk.get 返回 null。

C# NullReferenceException 泛型列表

评论

0赞 Chetan 12/7/2018
t.listCk为 null。你需要做的t.listCk = new List<Co>();

答:

0赞 user9401448 12/7/2018 #1

你需要初始化你的列表,你可以在构造函数中或在给它赋值之前这样做。下面是如何在构造函数中执行此操作的示例。

class Tasks
{
    public List<Ck> listCk { get; set; }

    public Task() {
        listCk = new List<Ck>();
    }

}
0赞 npo 12/7/2018 #2

您需要先实例化您的列表

更改此项

 class Tasks
{
    public List<Ck> listCk { get; set; }
}

 class Tasks
{
    public List<Ck> listCk { get; set; } = new List<Ck>();
}

Tasks t = new Tasks();
                Ck ck = new Ck();
                ck.CkName = "s1";
                ck.CkConentent = "s2";

                t.listCk.Add(ck); *Here i get NullReferenceException*

Tasks t = new Tasks();
                Ck ck = new Ck(){listCk  = new List<Ck>()};
                ck.CkName = "s1";
                ck.CkConentent = "s2";

                t.listCk.Add(ck); *Here i get NullReferenceException*

添加构造函数

   class Tasks
{
    public List<Ck> listCk { get; set; }

    public Task() {
        listCk = new List<Ck>();
    }

}

评论

0赞 Misa Misic 12/7/2018
谢谢你们,现在它工作了。当我执行任务时,t = new Tasks();不是所有属性都会实例化吗?
0赞 npo 12/7/2018
不可以,您必须显式创建它们的实例,因为尚未创建列表,并且您正在尝试将元素添加到空列表:)