抽象List <T> .Add在基本构造函数上不起作用

Jav*_*ich 2 c#

我有一个简单的类,它用预定义值覆盖列表获取方法,但是,在基本构造函数上调用add方法时,它不会添加新值。

这是我的代码,显示错误:

using System.Collections.Generic;
using NUnit.Framework;

public class SimpleTest
{
    [Test]
    public void Test()
    {
        var child = new ChildClass();
        Assert.AreEqual(4, child.myList.Count);
    }

    private abstract class MyBaseClass
    {
        public abstract List<string> myList { get; }

        public MyBaseClass(string addThis)
        {
            myList.Add(addThis);
        }
    }

    private class ChildClass : MyBaseClass
    {
        public override List<string> myList => new List<string> { "one", "two", "three" };

        public ChildClass() : base("four")
        {
            myList.Add("dsada");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?由于没有设置器,因此列表不能用其他列表代替,但是Add方法仍然适用于这种情况。

Nic*_*ler 7

public override List<string> myList => new List<string> { "one", "two", "three" };
Run Code Online (Sandbox Code Playgroud)

调用getter时,您总是返回一个新列表。创建一个存储列表并返回该列表的字段,或者使用自动实现的属性(您将其填充到构造函数中)。