我有一个简单的类,它用预定义值覆盖列表获取方法,但是,在基本构造函数上调用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方法仍然适用于这种情况。
public override List<string> myList => new List<string> { "one", "two", "three" };
Run Code Online (Sandbox Code Playgroud)
调用getter时,您总是返回一个新列表。创建一个存储列表并返回该列表的字段,或者使用自动实现的属性(您将其填充到构造函数中)。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |