c 陣列中的空值 C 初學者教程系列14 集合

2021-10-14 12:29:25 字數 2097 閱讀 9755

本文環境為visual studio 2019。

一、集合的定義

將具有同一型別的多個物件放到乙個組中進行管理,則是集合。集合可以自由的新增或者刪除乙個物件,還可以遍歷甚至使用索引器。

二、集合跟陣列的區別

陣列是固定大小的,而集合可以進行擴大或者縮小。

陣列是強型別的,但集合一旦泛型化,則也一樣是強型別。object在c#中是弱型別,其它為強型別。

三、c#中的集合

c#中的集合都將實現ienumerable和icollection介面。icollection是集合介面,ienumerable宣告為可迭代,即可以獲得乙個迭代器物件(ienumerator)。

c#中的集合類特別多,舉幾個例子,當然不止這些:

collection

hashtable

stack

queue

arraylist

list

dictionary

sortedlist

bitarray

concurrentdictionary

四、宣告乙個集合

以最典型的集合類list來說,要宣告它是很簡單的,由於集合都是類,所以宣告乙個類,就是new乙個物件:

list list = new list();
五、操作乙個集合對於list這個集合類來說,新增使用add方法,刪除使用remove方法,索引器使用[index],遍歷直接foreach即可。**如下:

同理,其它的集合類,也是大同小異的,你總能從c#的api類庫中找到對應的方法,雖然略有差異。

六、c#的集合類的命名空間

c#中的集合類位於下面3個命名空間中:

七、system.collections

system.collections 命名空間中的類不會將元素作為特別型別化的物件儲存,而是作為 object 型別的物件儲存。所以該命名空間下的集合不是強型別的。

主要有:

八、system.collections.generic

generic 中文翻譯為泛型,也就是通用型別。所以該命名空間下的集合類,都是<>泛型的。

主要有:

九、system.collections.concurrent

concurrent 中文翻譯為併發,所以該命名空間下的集合類,都是在多執行緒併發的條件下是執行緒安全的。

我們知道,像list、dictionary等都不是執行緒安全的,如果您要讓它執行緒安全,就要改用concurrent命名空間下的集合類。

該空間下的集合類主要有:

十、怎麼知道自己要用什麼集合

這個要看您的業務而定。

如果您不是在多執行緒下執行,則普通的泛型集合類system.collections.generic的集合即可。

若您的系統需要多執行緒和高併發,那麼concurrent命名空間的集合則是您的首選。

只要有可能,我們都是建議您首選泛型集合以及執行緒安全的集合。而不是使用弱型別的集合,因為那需要裝箱拆箱,會帶來效能損耗。通常我們平時開發一般都是泛型集合類居多。其中list<>、dictionary是很常用的。

最後,您也可以自行使用lock關鍵字編寫執行緒安全的集合,如list的執行緒安全lock寫法。這方面的**,網上已經有現成的,各位可以自行找一下。

祝您用餐愉快。

佇列(C 陣列,初學者易懂)

class queue 定義類佇列 include queue.h 先從本檔案開始查詢,用 include勉強也行,但是不推薦 includeusing namespace std queue queue int size 建構函式,動態分配空間給data陣列,初始化變數 queue queue 析...

C 初學者教程系列10 訪問修飾符

本文環境為visual studio 2019。一 為什麼使用訪問修飾符 訪問修飾符或訪問說明符用於定義類屬性或方法的可見性。有時候,您可能不希望其它程式檢視類的屬性或方法。在這種情況下,c 可以在類屬性和方法上設定修飾符。類修飾符可以限制訪問,以便其它程式看不到類的屬性或方法。訪問修飾符主要有以下...

C 初學者教程系列20 Stream流讀寫

本文環境為visual studio 2019。在c 檔案操作中,通常使用流來讀取和寫入檔案。流是在應用程式和檔案之間建立的層。流stream用於確保對檔案的流暢讀寫操作。從大檔案讀取資料時通常使用流。通過使用流,大型檔案中的資料被分解成小塊,然後傳送到流中,然後可以從應用程式中讀取這些資料塊。將其...