国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# 集合 <轉載>

2019-11-17 02:21:23
字體:
來源:轉載
供稿:網友

C# 集合 <轉載>

C#集合

先來了解下集合的基本信息

1、BCL中集合類型分為泛型集合與非泛型集合。

2、非泛型集合的類和接口位于System.Collections命名空間。

3、泛型集合的類和接口位于System.Collections.Generic命名空間。

  ICollection接口是System.Collections命名空間中非泛型集合類的基接口,它繼承自IEnumerable接口,從IEnumerable接口繼承意味著實現該接口的實現類需要實現一個枚舉器方法:GetEnumerator,該方法返回IEnumerator類型的數據。IDictionary和IList接口繼承自ICollection作為更為專用的接口,其中IDictionary接口是鍵/值對接口,它的實現如HashTable類;而IList是值的集合,其成員可通過索引訪問,如ArrayList類,次類集合與數組相比,可以認為是可變的集合,優點有,長度自動增長等。IEnumerable<T>和IEnumerable是所有集合或集合接口的基接口,所有集合接口或集合都繼承、實現了它。其中IEnumerable是最底層的接口。在非泛型集合里存放的都是System.Object類型。

一、下面列出非泛型和泛型集合的接口

非泛型集合接口          泛型集合接口              說明

ICollection           ICollection<T>          定義所有集合的大小(Count),枚舉器(foreach)和同步(copyto)方法,繼承自IEnumerable

IList              IList<T>             表示可按照索引單獨訪問的一組對象(像數組一樣)

IDictionary           IDictionary<T>          表示鍵/值對的集合

IComparer           IComparer<T>          定義類型為比較兩個對象而實現的方法

IEqualityComparer       IEqualityComparer<T>      定義方法以支持對象的相等比較

IEnumerable          IEnumerable<T>         公開枚舉器。實現了該接口意味著允許foreach語句循環訪問集合中的元素

IEnumerator          IEnumerator<T>         支持在泛型集合上進行簡單迭代

下面來詳細介紹各種集合接口和集合。個人認為應該從根底說起。

先抱著MSDN來說IEnumerable,擴展方法就不說了,擴展方法跳過,留到學Linq的時候再說。

1、IEnumerable接口就一個方法,沒有屬性。

  方法            說明

GetEnumerator         返回一個循環訪問集合的枚舉數。實現或繼承了該接口,就是為了這個方法,可以foreach遍歷。


2、IEnumerable<T>接口也一樣,也是就一個方法,沒有屬性。

  方法             說明

GetEnumerator        返回一個循環訪問集合的枚舉數。


3、ICollection接口

  方法             說明

  CopyTo           從特定的 Array 索引處開始,將 ICollection 的元素復制到一個 Array 中。  GetEnumerator       返回一個循環訪問集合的枚舉數。 (繼承自 IEnumerable。)

  屬性

  Count            獲取 ICollection 中包含的元素數。 原來Count的源頭在這里。  IsSynchronized       獲取一個值,該值指示是否同步對 ICollection 的訪問(線程安全)。  SyncRoot          獲取可用于同步 ICollection 訪問的對象。


4、ICollection<T>

  方法               說明

  Count               獲取 ICollection<(Of <(T>)>) 中包含的元素數。  IsReadOnly            獲取一個值,該值指示 ICollection<(Of <(T>)>) 是否為只讀。

  屬性

  Add                將某項添加到 ICollection<(Of <(T>)>) 中。  Clear               從 ICollection<(Of <(T>)>) 中移除所有項。  Contains             確定 ICollection<(Of <(T>)>) 是否包含特定值。  CopyTo              從特定的 Array 索引開始,將 ICollection<(Of <(T>)>) 的元素復制到一個 Array 中。  GetEnumerator          已重載。  Remove              從 ICollection<(Of <(T>)>) 中移除特定對象的第一個匹配項。

這個ICollect<T>,才開始有點集合的影子了,可以Add、Clear了,怪不得它作為泛型集合接口的基類。


5、IList

  IList繼承了ICollection和IEnumerable

  方法               說明

Add               將某項添加到 IList 中。Clear               從 IList 中移除所有項。Contains             確定 IList 是否包含特定值。CopyTo             從特定的 Array 索引處開始,將 ICollection 的元素復制到一個 Array 中。 (繼承自 ICollection。)GetEnumerator          返回一個循環訪問集合的枚舉數。 (繼承自 IEnumerable。)IndexOf             確定 IList 中特定項的索引。Insert               將一個項插入指定索引處的 IList。Remove              從 IList 中移除特定對象的第一個匹配項。RemoveAt            移除指定索引處的 IList 項。

  屬性

Count               獲取 ICollection 中包含的元素數。 (繼承自 ICollection。)IsFixedSize            獲取一個值,該值指示 IList 是否具有固定大小。IsReadOnly            獲取一個值,該值指示 IList 是否為只讀。IsSynchronized          獲取一個值,該值指示是否同步對 ICollection 的訪問(線程安全)。 (繼承自 ICollection。)Item               獲取或設置指定索引處的元素。SyncRoot             獲取可用于同步 ICollection 訪問的對象。 (繼承自 ICollection。)

可以看到,在不斷的繼承過程中,這些接口不斷地添加自己的東西,越繼承越多,越繼承越多。


6、IList<T>

  IList<T>繼承了ICollection<T>,IEnumerable<T>,IEnumerable

方法              說明

Add               將某項添加到 ICollection<(Of <(T>)>) 中。 (繼承自 ICollection<(Of <(T>)>)。)Clear              從 ICollection<(Of <(T>)>) 中移除所有項。 (繼承自 ICollection<(Of <(T>)>)。)Contains            確定 ICollection<(Of <(T>)>) 是否包含特定值。 (繼承自 ICollection<(Of <(T>)>)。)CopyTo             從特定的 Array 索引開始,將 ICollection<(Of <(T>)>) 的元素復制到一個 Array 中。 (繼承自 ICollection<(Of <(T>)>)。)GetEnumerator         已重載。IndexOf             確定 IList<(Of <(T>)>) 中特定項的索引。Insert              將一個項插入指定索引處的 IList<(Of <(T>)>)。Remove             從 ICollection<(Of <(T>)>) 中移除特定對象的第一個匹配項。 (繼承自 ICollection<(Of <(T>)>)。)RemoveAt            移除指定索引處的 IList<(Of <(T>)>) 項。

  屬性

Count              獲取 ICollection<(Of <(T>)>) 中包含的元素數。 (繼承自 ICollection<(Of <(T>)>)。)IsReadOnly           獲取一個值,該值指示 ICollection<(Of <(T>)>) 是否為只讀。 (繼承自 ICollection<(Of <(T>)>)。)Item              獲取或設置指定索引處的元素。

  同樣,在不斷的繼承中,增加了新的東西,功能也越來越強大,支持索引獲取和設置就是IList<T>這個源頭的。一直弄不明白,NHibernate為什么會選擇這個接口來返回數據,其實這個接口的東西夠用了。


7、IDictionary<TKey,TValue>接口

  IDictionary<TKey,TValue>是最底層出現的鍵/值對集合了,相當于值集合中的ICollection<T>

  方法            說明

Add             已重載。Clear            從 ICollection<(Of <(T>)>) 中移除所有項。 (繼承自 ICollection<(Of <(T>)>)。)Contains          確定 ICollection<(Of <(T>)>) 是否包含特定值。 (繼承自 ICollection<(Of <(T>)>)。)ContainsKey        確定 IDictionary<(Of <(TKey, TValue>)>) 是否包含具有指定鍵的元素。CopyTo           從特定的 Array 索引開始,將 ICollection<(Of <(T>)>) 的元素復制到一個 Array 中。 (繼承自 ICollection<(Of <(T>)>)。)GetEnumerator       已重載。Remove           已重載。TryGetValue         獲取與指定的鍵相關聯的值。

  屬性

Count            獲取 ICollection<(Of <(T>)>) 中包含的元素數。 (繼承自 ICollection<(Of <(T>)>)。)IsReadOnly         獲取一個值,該值指示 ICollection<(Of <(T>)>) 是否為只讀。 (繼承自 ICollection<(Of <(T>)>)。)Item             獲取或設置具有指定鍵的元素。Keys             獲取包含 IDictionary<(Of <(TKey, TValue>)>) 的鍵的 ICollection<(Of <(T>)>)。Values            獲取包含 IDictionary<(Of <(TKey, TValue>)>) 中的值的 ICollection<(Of <(T>)>)。

該接口提供的功能和ICollection<T>差不多,其實就是鍵/值對的開宗立派者。


8、IDictionary

方法               說明

Add               在 IDictionary 對象中添加一個帶有所提供的鍵和值的元素。Clear               從 IDictionary 對象中移除所有元素。Contains             確定 IDictionary 對象是否包含具有指定鍵的元素。CopyTo             從特定的 Array 索引處開始,將 ICollection 的元素復制到一個 Array 中。 (繼承自 ICollection。)GetEnumerator          已重載。Remove             從 IDictionary 對象中移除帶有指定鍵的元素。

  屬性

Count              獲取 ICollection 中包含的元素數。 (繼承自 ICollection。)IsFixedSize            獲取一個值,該值指示 IDictionary 對象是否具有固定大小。IsReadOnly            獲取一個值,該值指示 IDictionary 對象是否為只讀。IsSynchronized          獲取一個值,該值指示是否同步對 ICollection 的訪問(線程安全)。 (繼承自 ICollection。)Item               獲取或設置具有指定鍵的元素。Keys               獲取 ICollection 對象,它包含 IDictionary 對象的鍵。SyncRoot             獲取可用于同步 ICollection 訪問的對象。 (繼承自 ICollection。)Values              獲取 ICollection 對象,它包含 IDictionary 對象中的值。


9、ISet<T>

  ISet<T>同樣是繼承自ICollection<T>,IEnumerable<T>,IEnumerable

方法            說明

Add(T)           將某項添加到 ICollection<T> 中。 (繼承自 ICollection<T>。)Add(T)          向當前集內添加元素,并返回一個指示是否已成功添加元素的值。Clear           從 ICollection<T> 中移除所有項。 (繼承自 ICollection<T>。)Contains         確定 ICollection<T> 是否包含特定值。 (繼承自 ICollection<T>。)CopyTo         從特定的 Array 索引開始,將 ICollection<T> 的元素復制到一個 Array 中。 (繼承自 ICollection<T>。)ExceptWith        從當前集內移除指定集合中的所有元素。GetEnumerator()     返回一個循環訪問集合的枚舉數。 (繼承自 IEnumerable。)GetEnumerator()     返回一個循環訪問集合的枚舉器。 (繼承自 IEnumerable<T>。)IntersectWith       修改當前集,使該集僅包含指定集合中也存在的元素。IsPRoperSubsetOf     確定當前的設置是否正確 (嚴格) 指定集合的子集。IsProperSupersetOf   確定當前的設置是否正確 (嚴格) 指定集合中的超集。IsSubsetOf       確定一個集是否為指定集合的子集。IsSupersetOf       確定當前集是否為指定集合的超集。Overlaps         確定當前集是否與指定的集合重疊。Remove         從 ICollection<T> 中移除特定對象的第一個匹配項。 (繼承自 ICollection<T>。)SetEquals         確定當前集與指定的集合中是否包含相同的元素。SymmetricExceptWith   修改當前集,使該集僅包含當前集或指定集合中存在的元素(但不可包含兩者共有的元素)。UnionWith         修改當前設置,以使其包含當前集或指定的集合中的所有元素。

記住這些接口之間的關系,其實是非常重要的,方法和屬性記不全也無所謂,但是需要記住各自提供的功能,以及繼承關系。

先說IComparer接口,這個

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 任丘市| 桦川县| 通山县| 华阴市| 新闻| 盘山县| 于都县| 邢台市| 海晏县| 沁水县| 曲阜市| 肇州县| 疏附县| 澄江县| 涪陵区| 贺州市| 南皮县| 宜兴市| 博爱县| 长武县| 宜丰县| 赞皇县| 嘉祥县| 景宁| 英吉沙县| 雷山县| 涿鹿县| 东台市| 沙洋县| 岳池县| 崇阳县| 平阳县| 西藏| 锦屏县| 孟州市| 灵丘县| 长白| 古田县| 阜康市| 滕州市| 自贡市|