尽管数组类型实现了IList <t>,但为什么它们没有Add()方法呢?

时间:2019-02-03 21:30:27

标签: arrays .net interface icollection

诸如int []这样的数组类型实现了许多接口,IList是其中之一。 IList需要实现Add(T)方法(因为IList继承自ICollection)。

我正在编写一个“ CircularArray”类,该类本身包含一个数组,但由于是循环的,所以没有超出范围异常的任何索引。 该类的定义是这样的:

public class CircularArray<T> : ICloneable, IList<T>, IStructuralComparable, IStructuralEquatable

它应该实现数组所做的所有接口,所以我必须实现Add方法。但是,尽管数组实现了“ ICollection”接口,但它们没有此方法。

如何对数组进行所有操作,以便它们可以实现ICollection接口而没有Add方法?我想对我的CircularArray类做同样的事情。

1 个答案:

答案 0 :(得分:3)

解释在另一个主题中但以理的回答中。要实现的目标是使用显式接口实现。

    interface ILeft
    {
        int P { get;}
    }   
    class Middle : ILeft
    {
        int ILeft.P { get { return 0; } }
    }

var mid= new Middle();
var abc = mid.P // invalid;
var abc2 = (mid as ILeft).P; //valid