gpt4 book ai didi

c# - abstract List.Add 不适用于基本构造函数

转载 作者:行者123 更新时间:2023-11-30 19:14:44 25 4
gpt4 key购买 nike

我有一个简单的类,它用预定义的值覆盖列表 getter,但是,当调用基本构造函数上的 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");
}
}
}

这是为什么造成的?由于没有 setter,列表无法替换为不同的列表,但 Add 方法仍适用于这种情况。

最佳答案

public override List<string> myList => new List<string> { "one", "two", "three" };

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

关于c# - abstract List<T>.Add 不适用于基本构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56481928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com