本文環境為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用於確保對檔案的流暢讀寫操作。從大檔案讀取資料時通常使用流。通過使用流,大型檔案中的資料被分解成小塊,然後傳送到流中,然後可以從應用程式中讀取這些資料塊。將其...