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:隐藏基本索引器.这是对的还是错的,为什么?
也许这是一个非常糟糕的尝试,以防止通过索引器覆盖值?
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)
基本上,这是一个坏主意.遗憾的是,糟糕的代码比比皆是 - 不仅仅是因为存在而推断有用性:(