我一直看到 List 派生类看起来像这样
class MyClassList : List<MyClass>
{
public MyClass this[int index]
{
get { return (MyClass)base[index]; }
}
}
这种继承有什么意义?看起来它只是重申了成员的选角。我可以理解其他类型的索引器,但这只是默认列表索引器的重述,并引发 Visual Studio 警告 RE:隐藏基本索引器。这是正确的做法还是错误的做法,为什么?
最佳答案
也许这是一个非常糟糕的尝试来防止通过索引器覆盖值?
MyClassList x = new MyClassList();
x.Add(new MyClass());
x[0] = new MyClass(); // Error!
当然,这并不能阻止:
List<MyClass> x = new MyClassList();
x.Add(new MyClass());
x[0] = new MyClass(); // No problem here...
基本上,这是个坏主意。不幸的是,糟糕的代码比比皆是——不要仅仅从存在中推断有用 :(
关于c# - 为什么派生 List<T> 类只是为了重申索引器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772951/