爲了簡化我的問題,我使用IList
和IList<T>
作爲示例。 由於IList
宣佈方法Add(object value)
和IList<T>
宣佈方法Add(T value)
。我的新班級必須有兩種實施方法。C#實現接口與泛型重寫
class myList<T> : IList<T>, IList
{
public void IList.Add(object value)
{
this.Add(value as T);
}
public void Add(T value)
{...}
}
是否可以避免這種「無意義」複製?
如果您正在實現一個接口(或一組接口),指示您同時需要這兩個接口,那麼您需要同時聲明這兩個接口。期。你通常可以實現其中一個,然後讓所有其他人調用第一個。 –
您正在實施'IList'和'IList',所以期待重複。它們不是同一個接口 - 一個處理其他標準對象的泛型實現。你可以得到大多數IEnumerable派生的接口,我認爲這是由於枚舉,但可以記住我的頭頂。 –
只要你試圖重複15歲的錯誤,沒有。代碼是錯誤的,它必須使用this.Add((T)值)。 –