c# - 为什么派生 List<T> 类只是为了重申索引器?

标签 c# list inheritance

我一直看到 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/

相关文章:

c++ - 防止公共(public)使用用作私有(private)基类的类

c# - 为什么这个 async/await 代码会生成 "...not all code paths return a value"?

c# - jaxb marshal 生成空文件

c# - 有没有办法将小巧的查询添加到列表并执行所有查询?

java - Netbeans 抛出有关 super 构造函数的错误

java - 为什么子类方法打印 null ?我究竟做错了什么?

c# - 压缩响应无效

c# - 一个 eventhub 是否可以触发 2 个 azure 函数?

python - Map操作最后一个元素异常

python - 删除序列中重复的项目集