我有一个班级,比如DerivedBindingList<T>
,它来自BindingList<T>
。
我想在派生类中使用索引器,并将其编码为:
public T this[int index]
{
get
{
// Getter code
}
set
{
// Setter code
}
}
但是,编译器会抱怨以下消息:“...隐藏继承的成员'System.Collections.ObjectModel.Collection.this [int]'。如果想要隐藏,请使用new关键字。”
我可以添加'new'关键字并且编译器很高兴,但是我应该以某种方式做些不同的事情来避免这种警告吗?
也许我不得不以某种方式使用base.this []?
感谢。
答案 0 :(得分:2)
BindingList
中的索引器不是虚拟的,因此您无法覆盖它 - 如果您真的想要这样做,则必须隐藏它。
我不认为我会建议它 - 成员隐藏是混淆代码的秘诀。你想做什么?你肯定想从BindingList<T>
派生而不是编写它(即拥有类BindingList<T>
类的成员)吗?你的新索引器会做什么?
答案 1 :(得分:0)
此警告显示索引器已存在于基类中。如果要更改其行为,则应覆盖它(如果它在基类中定义为虚拟)或使用new关键字告诉编译器使用派生索引器方法每当它使用派生类的实例时。