Add element to null (empty) List<T> Property
本问题已经有最佳答案,请猛点这里访问。
我有个问题。
问题是我试图将一个对象添加到这个对象的列表中。这个列表是一个属性,没有错误,但是当我在此时运行它时失败了,因为:"NullReferenceException"。听起来很合理,因为列表的属性是"空",但是我不能声明属性,可以吗?
她的密码被剪掉了:
1 2 3 | class Maps { protected virtual List<Ant> AllAntsAtMap { get; set; } |
[…]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Quadrangle : Maps { protected override List<Ant> AllAntsAtMap { get; set; } public override void AddAntToMap(Ant ant) { AllAntsAtMap.Add(ant); //Error here } public override void AddAntsToMap(List<Ant> ants) { foreach (Ant ant in ants) { AddAntToMap(ant); } } |
[…]
在构造函数中初始化列表:
1 2 3 4 5 6 7 8 9 |
(由于属性是在超类映射中声明的,所以我将在那里进行初始化,而不是在子类四边形中进行初始化。)
在C 6中更简单:
1 |
您应该在使用前初始化
1 2 3 4 |
在构造函数中初始化列表。
1 2 3 4 5 6 7 8 9 10 | class Maps { protected virtual List<Ant> AllAntsAtMap { get; set; } public Maps() { AllAntsAtMap = new List<Ant>(); } } |
您不需要重写
如果基类不应该有list属性的实现,那么应该使它成为
您需要先实例化列表,然后再添加:
1 |