如何使用一些自定义方法创建只有List <string>的类?

Inf*_*eus 1 c# oop

这似乎是一项微不足道的任务,但我找不到怎么做(而且不知道该怎么称呼它).

例.我需要的state是实际上只是字符串列表的类.它必须如此工作:

state s = new state();
s.Add("John Madden");
//s[0] == "John Madden"
Run Code Online (Sandbox Code Playgroud)

我需要向这个类添加一些方法.

pok*_*oke 6

你可以继承它:

public class State : List<string>
{}
Run Code Online (Sandbox Code Playgroud)

这样,您就List<string>可以使用自己的类型名称提供完整的界面.然后你可以去,并添加自己的方法.

如果你想要更多地控制它,例如隐藏一些方法或改变它们的工作方式,你也可以创建一个实现的包装类,IList<string>并将其大部分方法委托给私有List<string>实例.像这样:

public class State : IList<string>
{
    private List<string> internalList = new List<string>();

    public string this[int index]
    {
        get { return internalList[index]; }
        set { internalList[index] = value; }
    }

    public void Add (string item)
    {
        internalList.Add(item);
    }

    // etc. for the other IList<T> members
}
Run Code Online (Sandbox Code Playgroud)

  • 从`List <T>`继承是一个坏主意.[为什么不从List <T>继承](http://stackoverflow.com/questions/21692193/why-not-inherit-from-listt) (2认同)