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接口。