将元素添加到null(空)List <T>属性

Sin*_*son 2 c# properties list object

我遇到了问题.

问题是我尝试将对象添加到此对象的列表中.这个列表是一个属性,没有错误,但是当我运行它时,此时失败,因为:"NullReferenceException".听起来合乎逻辑,因为列表的属性是"null",但我不能声明属性,可以吗?

她是一些代码剪辑:

class Maps
{
    protected virtual List<Ant> AllAntsAtMap { get; set; }
Run Code Online (Sandbox Code Playgroud)

[...]

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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

[...]

Hei*_*nzi 9

在构造函数中初始化列表:

class Maps
{
    public Maps()
    {
        AllAntsAtMap = new List<Ant>();
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

(由于属性是在超类Maps中声明的,我会在那里进行初始化,而不是在子类Quadrangle中进行初始化.)


Kęd*_*rzu 5

在C#6中,它要简单得多:

protected List<Ant> AllAntsAtMap { get; set; } = new List<Ant>();
Run Code Online (Sandbox Code Playgroud)

  • 这个假设与问题有什么关系? (3认同)