【數據類型】Dictionary 與 ConcurrentDictionary 待續


Dictionary<TKey, TValue> 泛型類提供了從一組鍵到一組值的映射。通過鍵來檢索值的速度是非常快的,接近於 O(1),這是因為 Dictionary<TKey, TValue> 類是作為一個哈希表來實現的。檢索速度取決於為 TKey 指定的類型的哈希算法的質量。TValue可以是值類型,數組,類或其他。

線程安全:CSDN上說法:

     只要不修改該集合,Dictionary<TKey, TValue> 就可以同時支持多個閱讀器。即便如此,從頭到尾對一個集合進行枚舉本質上並不是一個線程安全的過程。當出現枚舉與寫訪問互相爭用這種極少發生的情況時,必須在整個枚舉過程中鎖定集合。若允許多個線程對集合執行讀寫操作,您必須實現自己的同步。

     讀寫並行的時候需要加鎖,但是加上鎖性能就會受影響。

ConcurrentDictionary<TKey, TValue> framework4出現的,可由多個線程同時訪問,且線程安全。用法同Dictionary很多相同,但是多了一些方法。ConcurrentDictionary 屬於System.Collections.Concurrent 命名空間按照CSDN上所說:System.Collections.Concurrent 命名空間提供多個線程安全集合類。當有多個線程並發訪問集合時,應使用這些類代替 System.Collections 和 System.Collections.Generic 命名空間中的對應類型。

一 Dictionary使用

1)實例化  Dictionary<int, string> dic = new Dictionary<int, string>();

    添加   dic.Add(1, "one");

    提取: string a = dic[1];  //one

   鍵不能重復,值可以重復。

  排序: var dicNew=from d in dic order by d.key select d;

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM