“Object reference not set to an instance of an object” error when trying to add objects to a list inside a class
本问题已经有最佳答案,请猛点这里访问。
我定义了一些自定义类,其中包括类似这样的其他类的列表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Unit { public string Name { get; set; } public List<Group> Contains { get; set; } } public class Group { public string Name { get; set; } public Type Type { get; set; } public int Number { get; set; } } public static Type basic_1 = new Type() { Name ="basic_1", Number = 1, Cost = 13 }; |
基本思想是你有一个单元,它包含一个组列表,每个组都有不同的类型。类型包含特定属性,而包含这些属性的类本质上是组织的。
然后我开始尝试像这样建立这些类:
1 2 3 |
但在这里我收到错误(在
我做错什么了?仅供参考,我以前从来没有做过这样的事情,所以我甚至不知道是否有可能,但直到这一点,它似乎工作得很好。
您的
在这种情况下,我们只需添加一个默认的构造函数来初始化列表。
1 2 3 4 5 6 7 8 9 10 11 | public class Unit { public string Name { get; set; } public List<Group> Contains { get; set; } public Unit() { Contains = new List<Group>(); } } |
顺便说一下,
1 2 3 4 5 6 7 8 9 10 11 | public class Unit { public string Name { get; set; } public List<Group> Groups { get; set; } public Unit() { Groups = new List<Group>(); } } |
您可以将您的
1 2 3 4 5 6 7 8 9 10 11 | public class Unit { public string Name { get; set; } List<Group> list = new List<Group>(); public List<Group> Contains { get { return list; } } } |
正如您所看到的,
虽然这超出了您的问题范围,但我建议您将
您已初始化单元,但Unit.Contains未初始化。在将对象添加到包含列表之前,必须对其进行初始化。
1 2 3 4 |
或
在单元类构造函数中,可以在此处初始化列表中的代码
1 2 3 4 5 6 7 8 9 | public class Unit { public string Name { get; set; } public List<Group> Contains { get; set; } public Unit() { Contains = new List<Group>(); } } |
我更喜欢第二个解决方案,因为它将确保每当单元初始化时,包含都将自动初始化。