如何选择使用IEnumerable,ICollection,IList

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: |||超大  

IEnumerable, ICollection, IList,每种接口只适合某些特定场景,如何区别使用呢?

IEnumerable接口,只提供了一个获取迭代器的方法,这也是为什么可以使用foreach遍历实现了IEnumerable接口集合的原因。

public interface IEnumerable

{

IEnumerator GetEnumerator();

}

ICollection实现了IEnumerable接口,因此,除了拥有IEnumerable接口的能力,还包括其它能力。

public interface ICollection : IEnumerable

{

int Count{get;}

bool IsSynchronized{get;}

Object SyncRoot{get;}

IEnumerator GetEnumerator();

void CopyTo(Array array, int index);

}

IList同时实现了ICollection和IEnumerable接口,在2个接口的基础上,可以添加、移除或清空集合,还提供了根据索引访问集合元素。

public interface IList : ICollection, IEnumerable

{

bool IsFixedSize{get;}

bool IsReadOnly{get;}

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

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);

}

总结:

● 如果只想遍历集合,使用IEnumerable, IEnumerable<T>

● 如果想遍历、修改集合,以及需要延迟加载的导航属性,使用ICollection, ICollection<T>

● 如果想遍历、修改、添加、清空、使用索引,使用IList, IList<T>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有