为了简化我的问题,我使用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)值)。 –