[英]Correct implementation of an indexer on a derived class
我有一個類,比如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 []?
謝謝。
BindingList
的索引器不是虛擬的,因此您不能覆蓋它-如果您確實想這樣做,則只能將其隱藏。
我認為我不建議這樣做-成員隱藏是混淆代碼的秘訣。 你想做什么? 您是否肯定要從BindingList<T>
派生而不是組成它(即,具有BindingList<T>
類型的類的成員)? 您的新索引器將要做什么?
此警告表明索引器已經存在於基類中,如果要更改其行為,則應覆蓋它(如果在基類中定義為虛擬的)或使用new關鍵字告訴編譯器在工作時使用派生的索引器方法帶有派生類的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.