为什么派生一个List <T>类只是为了重述索引器?

dow*_*tch 4 c# inheritance list

我一直看到List派生类看起来像这样

class MyClassList : List<MyClass>
{
    public MyClass this[int index]
    {
        get { return (MyClass)base[index]; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种继承有什么意义?看起来它只是重述了成员的铸造.我可以理解其他类型的索引器,但这只是对默认List索引器的重述,并引发Visual Studio警告RE:隐藏基本索引器.这是对的还是错的,为什么?

Jon*_*eet 5

也许这是一个非常糟糕的尝试,以防止通过索引器覆盖值?

MyClassList x = new MyClassList();
x.Add(new MyClass());
x[0] = new MyClass(); // Error!
Run Code Online (Sandbox Code Playgroud)

当然,它并没有阻止这一点:

List<MyClass> x = new MyClassList();
x.Add(new MyClass());
x[0] = new MyClass(); // No problem here...
Run Code Online (Sandbox Code Playgroud)

基本上,这是一个坏主意.遗憾的是,糟糕的代码比比皆是 - 不仅仅是因为存在而推断有用性:(