gpt4 book ai didi

c# - 如何强制派生类填充基类中定义的列表?

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:17 25 4
gpt4 key购买 nike

这是与 C# 相关的问题,但实际上这个问题很笼统。

假设我有一个基类

abstract class Base {
protected List<string> MyList = new List<string>();
protected abstract void FillMyList();
}

class Derived : Base {
protected void FillMyList() {
MyList.Add("test");
MyList.Add("test2");
}
}

这样就可以了,派生类填充基类中定义的MyList。

但是,除了抽象方法名称 (FillMyList) - 这暗示您实际上必须填充 MyList - 没有关于此方法的含义的线索。

有没有更好的方法来强制执行或(更好)强烈建议您在从 Base 继承时必须填写 MyList?也许将 FillMyList 声明为:

protected abstract void FillMyList(List<string> listToFill);

你有什么建议?

最佳答案

您可以将 MyList 转换为带有 getter 的抽象属性,派生必须实现

public abstract class Base
{
public abstract List<int> List { get; }
}

public class Derived : Base
{
#region Overrides of Base

public override List<int> List
{
get { return new List<int> {1, 2, 3}; }
}

#endregion
}

关于c# - 如何强制派生类填充基类中定义的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4243956/

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