为什么IList <t>扩展了IEnumerable <t>和IEnumerable接口?

时间:2016-01-12 13:59:38

标签: c# .net

这是看起来IList<T>通用接口

的方式
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
    T this[int index] { get; set; }

    int IndexOf(T item);

    void RemoveAt(int index);
}

为什么IList<T>扩展了IEnumerable<T>IEnumerable接口?

IEnumerable<T>已有IEnumerable。同样的事情是ICollection<T>接口。

1 个答案:

答案 0 :(得分:1)

实际上它并没有。您可以在Github上看到实际声明:

[TypeDependencyAttribute("System.SZArrayHelper")]
#if CONTRACTS_FULL
[ContractClass(typeof(IListContract<>))]
#endif // CONTRACTS_FULL
public interface IList<T> : ICollection<T>
{
    T this[int index] {
        get;
        set;
    }

    int IndexOf(T item);
    void Insert(int index, T item);
    void RemoveAt(int index);
}

MSDN只是一个参考信息,这个界面仅为了清晰起见而添加。