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

本文关键字:gt IEnumerable lt 接口 IList 扩展 为什么 | 更新日期: 2023-09-27 18:30:09

这就是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>已经具有IEnumerableICollection<T>接口也是如此。

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

实际上并没有。你可以在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只是一个参考信息,添加这些接口只是为了清楚起见。