日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C#--数组和集合

發(fā)布時(shí)間:2025/3/21 C# 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#--数组和集合 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C#在存儲(chǔ)數(shù)據(jù)的時(shí)候,是需要先聲明一個(gè)數(shù)組的,當(dāng)然還可以使用集合。那么數(shù)組與集合有什么區(qū)別,為什么有了數(shù)組還需要集合呢?

一、數(shù)組:

定義:數(shù)組是相同數(shù)據(jù)類(lèi)型的元素按一定順序排列的集合。

優(yōu)點(diǎn):數(shù)組在存儲(chǔ)數(shù)據(jù)的時(shí)候是連續(xù)存儲(chǔ)的,因此可以快速而容易地從頭到尾遍歷元素,可以快速的修改元素等等。

缺點(diǎn):在聲明數(shù)組的時(shí)候必須先聲明指定的長(zhǎng)度。如果事先不知道存儲(chǔ)的大小,很容易會(huì)造成聲明的長(zhǎng)度過(guò)長(zhǎng)導(dǎo)致內(nèi)存空間浪費(fèi),過(guò)短則造成數(shù)據(jù)的溢出。而且在兩個(gè)數(shù)據(jù)中間插入數(shù)據(jù)也是非常麻煩的,需要將插入位置后面的數(shù)組全部移動(dòng)位置。

二、集合:

定義:ArrayList是命名空間System.Collections下的一部分,它是使用大小可按需動(dòng)態(tài)增加的數(shù)組實(shí)現(xiàn)IList接口。ArrayList的默認(rèn)初始容量為0,隨著元素添加到ArrayList中,容量會(huì)根據(jù)需要通過(guò)重新分配自動(dòng)增加。

優(yōu)點(diǎn):ArrayList 可以根據(jù)使用大小按需動(dòng)態(tài)增加,不用事先設(shè)置大小,可以隨意的添加數(shù)據(jù),插入或移除某一范圍元素也比較方便。

缺點(diǎn):因?yàn)锳rrayList 插入值的類(lèi)型都是當(dāng)做Object 類(lèi)型插入的,所以當(dāng)調(diào)用數(shù)據(jù)的時(shí)候可能會(huì)出現(xiàn)類(lèi)型不匹配的錯(cuò)誤。

三、總結(jié):

(1)數(shù)組是一種非常有用的數(shù)據(jù)結(jié)構(gòu),但是數(shù)組也具有很多的局限性:首先,數(shù)組元素的數(shù)據(jù)類(lèi)型必須是相同的,其次,在創(chuàng)建數(shù)組時(shí)必須確定元素個(gè)數(shù)數(shù)組一旦創(chuàng)建,其大小就是固定的。想調(diào)整其大小或者增加新的元素都是比較困難的。特別是,當(dāng)對(duì)象的個(gè)數(shù)未知,并且隨時(shí)可能要循環(huán)、添加和移除時(shí),數(shù)組會(huì)很不方便。

(2)集合是通過(guò)高度結(jié)構(gòu)化的方式存儲(chǔ)任意對(duì)象的類(lèi),它可以把一組類(lèi)似的對(duì)象組合在一起。與無(wú)法動(dòng)態(tài)調(diào)整大小的數(shù)組相比,集合不僅能隨意調(diào)整大小,而且為存儲(chǔ)或檢索某個(gè)對(duì)象提供了更多的方法。例如,由于Object是所有數(shù)據(jù)類(lèi)型的基類(lèi),因此任何類(lèi)型的對(duì)象(包括任何值類(lèi)型或引用類(lèi)型數(shù)據(jù))都可被組合到一個(gè)Object類(lèi)型的集合中,并通過(guò)C#的foreach語(yǔ)句來(lái)訪問(wèn)來(lái)訪問(wèn)其中的每一個(gè)對(duì)象。當(dāng)然,對(duì)于一個(gè)Object類(lèi)型的集合來(lái)說(shuō),可能需要單獨(dú)對(duì)個(gè)元素執(zhí)行附加的處理,例如,裝箱、拆箱或轉(zhuǎn)換等。

另外:

1、數(shù)組:同一類(lèi)型,固定長(zhǎng)度;集合:不同類(lèi)型,不固定長(zhǎng)度。

2、要使用集合,必須先引用命名空間:using System.Collections;

3、集合的一些方法:

Add()向集合中添加一個(gè)元素;

Remove()刪除集合中的一個(gè)元素 ;

RemoveAt(int i)刪除集合中索引值為i的元素 ;

Reverse()反轉(zhuǎn)集合的元素 ;

Sort()以從小到大的順序排列集合的元素 ;

Clone()復(fù)制一個(gè)集合。

4、Hashtable:哈希表,碼-值對(duì)(key-value),類(lèi)似于字典(比數(shù)組更強(qiáng)大)。哈希表是經(jīng)過(guò)優(yōu)化的,訪問(wèn)下標(biāo)的對(duì)象先散列過(guò)。如果以任意類(lèi)型鍵值訪問(wèn)其中元素會(huì)快于其他集合。GetHashCode()方法返回一個(gè)int型數(shù)據(jù),使用這個(gè)鍵的值生成該int型數(shù)據(jù)。哈希表獲取這個(gè)值最后返回一個(gè)索引,表示帶有給定散列的數(shù)據(jù)項(xiàng)在字典中存儲(chǔ)的位置。

5、單線程程序中推薦使用?Dictionary,?有泛型優(yōu)勢(shì),?且讀取速度較快,?容量利用更充分。多線程程序中推薦使用?Hashtable,默認(rèn)的Hashtable允許單線程寫(xiě)入,多線程讀取,對(duì)?Hashtable?進(jìn)一步調(diào)用?Synchronized()?方法可以獲得完全線程安全的類(lèi)型。而?Dictionary?非線程安全,必須人為使用?lock?語(yǔ)句進(jìn)行保護(hù),效率大減。

總結(jié)

以上是生活随笔為你收集整理的C#--数组和集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。