asp.net

IList和IList

2024-01-14

IList<T>是按照位置对集合进行索引的标准接口。除了从ICollection<T>和IEnumerable<T>继承的功能之外,它还可以按位置(通过索引器)读写元素,并在特定位置插入/删除元素。


public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

{

    T this[int index] { get; set; }

    int IndexOf(T item);

    void Insert(int index, T item);

    void RemoveAt(int index);

}

IndexOf方法可以对列表执行线性搜索,如果未找到指定的元素则返回-1。

IList的非泛型版本具有更多的成员,因为(相比泛型版本)它从ICollection继承过来的成员比较少:


public interface IList : ICollection, IEnumerable

{

    object this[int index] { get; set; }

    bool IsReadOnly { get; }

    bool IsFixedSize { get; }

    int Add(object value);

    void Clear();

    bool Contains(object value);

    int IndexOf(object value);

    void Insert(int index, object value);

    void Remove(object value);

    void RemoveAt(int index);

}

非泛型的IList接口的Add方法会返回一个整数代表最新添加元素的索引。相反,ICollection<T>的Add方法的返回类型为void。

通用的List<T>类实现了IList<T>和IList两种接口。C#的数组同样实现了泛型和非泛型版本的IList接口。