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

首頁 > 開發 > 綜合 > 正文

C#中的集合類

2024-07-21 02:26:25
字體:
來源:轉載
供稿:網友

集合,表示可以通過遍歷每個元素來訪問的一組對象(特別是可使用foreach循環訪問)
一個集合包括多個元素,即有一個集合類對象和n個元素對象

---------------------------

因為任何集合類都實現了ienumerable接口,所以任何集合類對象都有一個getenumerator()方法,該方法可以返回一個實現了ienumerator接口的對象,這個返回的ienumerator對象既不是集合類對象,也不是集合的元素類對象,它是一個獨立的類對象。通過這個對象,可以遍歷訪問集合類對象中的每一個元素對象

如果集合類是用戶自定義的集合類,則用戶必須實現它的getenumerator()方法,否則不能使用循環。當然,與這個自定義集合類對應的ienumerator類(實現了該接口的類),也要自定義一個才行

比如,arraylist集合類對應的ienumerator是 arraylistenumeratorsimple
            array集合類對應的ienumerator是 szarrayenumerator
      (這兩個類在.net framework類庫文檔(msdn)中都沒有介紹)

------------------------

1.system.colloctions中表示集合的行為的接口有:
1)icollection
定義所有集合的大小、枚舉數和同步方法。派生于ienumerable
它定義了集合類最基本的行為,所有的集合類都實現了這個接口(基接口)
但是它的行為太過基本:主要就是一個count屬性,單獨實現它沒有太大意義

2)ienumerable
公開枚舉數,該枚舉數支持在集合上進行簡單迭代
它只有一個方法 getenumerator(),該方法可以返回一個ienumerator接口,通過它可以遍歷集合
基本上所有的集合類都實現了這個接口

3)ilist
ilist實現是可排序且可按照索引訪問其成員的值的集合,它本身實現了icollection和ienumerable接口
是所有列表的抽象基類。ilist 實現有三種類別:只讀、固定大小、可變大小。

4)idictionary
idictionary實現是鍵/值對的集合,它本身實現了icollection和ienumerable接口
是鍵/值對的集合的基接口。idictionary 實現有三種類別:只讀、固定大小、可變大小。
idictionary可稱為字典、映射或散列表,它根據鍵(任意類型)來訪問值

------------------------------

2.system.collections中可以直接使用的集合類有:
1)arraylist
實現了接口:ilist、icollection、ienumerable
只要集合未被修改,arraylist 就可安全地同時支持多個讀取器
隨著向 arraylist 中添加元素,容量通過重新分配按需自動增加(2倍增加)
如果需要建立一個對象數組,但不能預先知道數組的大小,就可以使用arraylist
arraylist把所有元素都當作object對象引用,因而在訪問arraylist的元素時要進行類型轉換
優點:動態改變大小、靈活方便的插入和刪除元素、可排序
缺點:插入時性能不如數組、不是強類型的

2)bitarray
實現了接口:icollection、ienumerable
管理位值的壓縮數組。

3)hashtable
實現了接口:idictionary、icollection、ienumerable
可以向hashtable中自由添加和刪除元素,有些像arraylist,但沒有那么大的性能開銷

4)sortedlist
實現了接口:idictionary、icollection、ienumerable
sortedlist兼顧了arraylist和hashtable的優點,可按鍵值來排序

5)queue
實現了接口:icollection、ienumerable
queque是隊列,先進先出的訪問各個元素
可以調用queque對象的getenumerator()方法,得到ienumerator對象,來遍歷隊列中的各個元素

6)stack
實現了接口:icollection、ienumerable
stack是堆棧,后進先出的訪問各個元素
可以調用stack對象的getenumerator()方法,得到ienumerator對象,來遍歷堆棧中的各個元素

----------------

3.上面提到的幾種集合類,他們都是通用的集合類,他們所接受的元素大都是object類型,當對象放入
了集合之后,都失去了原有的類型信息-即這些通用集合類都不是強類型的
解決辦法是使用強類型的集合類
system.collections命名空間下的collectionbase,dictionarybase,readonlycollectionbase 類
system.collections.specialized命名空間下的一些類可以滿足要求,可以直接使用也可以繼承

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘孜| 聊城市| 米林县| 信丰县| 宁国市| 蒙阴县| 鄯善县| 乌拉特后旗| 外汇| 商河县| 马山县| 靖安县| 佳木斯市| 陵川县| 呼图壁县| 宜川县| 金门县| 宣化县| 丰城市| 冷水江市| 安国市| 阳信县| 武山县| 噶尔县| 波密县| 西昌市| 陵水| 夏邑县| 会昌县| 原平市| 灵丘县| 班玛县| 普兰县| 泰来县| 广丰县| 信宜市| 桂阳县| 彭州市| 凯里市| 济源市| 清水河县|