.net集合类型的接口说明与使用
本文介紹了.net集合類型的接口說明與使用,內(nèi)容比較簡單,主要是為了理清思路以及明確集合類型作為參數(shù)和返回值時的使用規(guī)范,關(guān)于集合類型的更多討論也可以參看:認識.NET的集合。
NET類庫提供了豐富的集合數(shù)據(jù)類型,光System.Collections 命名空間就提供了:列表、隊列、位數(shù)組、哈希表和字典等多種集合類型。以該命名空間下的集合類型來講,大體可以分為兩類:列表,與字典。前者按照順序訪問集合中的數(shù)據(jù),后者提供了鍵值對的訪問方式。
本文主要介紹了列表類型的接口說明和使用上的建議,不涉及.net2.0中的泛型,后者的接口層次與這兒的介紹類似。
接口定義:
IEnumerator
??? object Current { get; }
??? bool MoveNext();
??? void Reset();
IEnumerable
??? IEnumerator GetEnumerator();
ICollection : IEnumerable
??? int Count { get; }
??? bool IsSynchronized { get; }
??? object SyncRoot { get; }
??? void CopyTo(Array array, int index);
???
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);
說明:
IEnumerator 提供了遍歷數(shù)據(jù)的方法,在需要依次訪問列表中的數(shù)據(jù)的情況下,使用該接口。
IEnumerable 為foreach操作提供支持,會返回IEnumerator接口對象。
ICollection?? 提供了條目數(shù)量屬性,與拷貝到數(shù)組的方法,同時提供了線程同步支持。
IList?????? ?? 提供了添加,查找,刪除,清空的操作,并支持按索引的訪問方式,同時IList具有只讀和固定長度屬性,如果為只讀或固定長度情況下執(zhí)行新增,刪除等操作會引起異常。
??
使用:
1 作為參數(shù):
如果需要遍歷列表,但不需要修改的情況下,優(yōu)先使用ICollection,因為Collection比Enumerable, Enumerator在名稱上更為貼切。同時,Collection提供了Count屬性,在不需要遍歷的情況下,即可獲知列表的條目數(shù)量,這在進行一些邏輯判斷時,更為有用。
??? 例如:
??????? bool Foo(ICollection list)
??????? {
??????????? if (list == null)
??????????????? throw new ArgumentException("參數(shù)不能為空!", "list");
???????????
??????????? if (list.Count == 0)
??????????? {
??????????????? return false;
??????????? }
???????????
??????????? foreach(object item in list)
??????????? {
??????????????? ... option
??????????? }
??????????? return true;
??????? }
???
如果需要對列表數(shù)據(jù)進行修改,查找等操作,使用IList。
2 作為返回值:?
如果希望返回一個只讀的列表,使用ICollection,反之IList。
在多數(shù)情況下,返回IList,因為IList具有更寬的接口,調(diào)用者獲得一個IList類型的列表后,可以更容易的把該列表再傳遞給需要:ICollection或IList的函數(shù)。
轉(zhuǎn)載于:https://www.cnblogs.com/jiyang/archive/2007/07/03/804483.html
總結(jié)
以上是生活随笔為你收集整理的.net集合类型的接口说明与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我国军工持续10年爆发
- 下一篇: 歼20与歼16产能创新高!