提问人:Misa Misic 提问时间:12/7/2018 最后编辑:ricMisa Misic 更新时间:12/7/2018 访问量:42
将类添加到另一个类属性 public List<Class> ListOfThatClass { get; set; }[复制]
Add class to another class property public List<Class> ListOfThatClass { get; set; } [duplicate]
问:
头等舱
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。
答:
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
不可以,您必须显式创建它们的实例,因为尚未创建列表,并且您正在尝试将元素添加到空列表:)
评论
t.listCk
为 null。你需要做的t.listCk = new List<Co>();