C 集合篇之 集合介面和型別

2021-10-14 02:14:55 字數 1495 閱讀 8101

概述:

list 是與陣列相當的集合類。其他型別的集合:佇列、棧、鍊錶、字典和集。它們提供的訪問集合元素的api 可能稍有區別,在記憶體中儲存元素的內部結構也有區別。

集合介面和型別

大多數集合都可在system.collectionssystem.collections.generic命名空間下找到。

那這兩個命名空間下的其他命名空間有什麼不同或者說區別呢?

讓我們一起看看吧。

命名空間

集合類system.collections.generic

泛型集合類

system.collections.concurrent

執行緒安全的集合類

system.collections.immutable

不可變的集合類

集合和列表實現的介面

介面說明

ienumerable如果將foreach 語句用於集合,就需要ienumerable介面,這個介面定義了方法getenumerator().它返回了乙個實現了ienumerable介面的列舉

icollectionicollection介面由泛型集合類實現,使用這個介面可以獲得集合中的元素個數(count 屬性),把集合複製到陣列中(copyto()方法),還可以從集合中新增和刪除元素(add()、remove()、clear())

ilistilist介面用於可通過位置訪問其中的元素列表,這個介面定義了乙個索引器,可以在集合的指定位置插入或刪除某些項,(insert()和removeat()方法)。ilist介面派生自icollection介面

isetiset介面由集實現,集允許合併不同的集,獲得兩個集的交集。檢查兩個集是否重疊,iset介面派生自icollection介面

idictionaryidictionary介面由包含鍵和值的泛型集合類實現。使用這個介面可以訪問所有的鍵和值,使用鍵型別的索引器可以訪問某些項,還可以新增或者刪除某些項。

ilookupilookup介面類似於idictionary介面,實現該介面的集合有鍵和值,且可以通過乙個鍵包含多個值

icomparer介面icomparer由比較器實現,通過compare()方法給集合中的元素排序

iequalitycomparer介面iequalitycomparer由乙個比較器實現,該比較器可用於字典中的鍵,使用這個介面,可以對物件進行相等行比較。

參考:c# 高階程式設計

集合介面和型別

在.net 2.0之前,不存在泛型。現在泛型集合類通常是集合的首選型別。泛型集合類是型別安全的,如果使用值型別,是不需要裝箱操作的。如果要在集合中新增不同型別的物件,且這些物件不是相互派生的,例如在集合中新增int和string物件,就只需基於物件的集合類。另一組集合類是專用於特定型別的集合,例如s...

c 中常用集合類和集合介面之集合類系列

常用集合類 陣列 array 的不足 即 集合與陣列的區別 1.陣列是固定大小的,不能伸縮。雖然system.array.resize這個泛型方法可以重置陣列大小,但是該方法是重新建立新設定大小的陣列,用的是舊陣列的元素初始化。隨後以前的陣列就廢棄!而集合卻是可變長的。2.陣列要宣告元素的型別,集合...

c 中常用集合類和集合介面之集合類系列

常用集合類 陣列 array 的不足 即 集合與陣列的區別 1.陣列是固定大小的,不能伸縮。雖然system.array.resize這個泛型方法可以重置陣列大小,但是該方法是重新建立新設定大小的陣列,用的是舊陣列的元素初始化。隨後以前的陣列就廢棄!而集合卻是可變長的。2.陣列要宣告元素的型別,集合...