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>
新聞熱點
疑難解答