c#關於Dictionary中自定義Key


Dictionary 描述

字典 Dictionary 通過 Hash 桶算法進行O(1)查找數據,在 Hash 碰撞達到一定次數后會自動進行 Resize,也會在數組大小不足的時候會自動進行Resize。

如果自定義 Key 沒有重寫 GetHashCode 和 Equal 方法,則會調用基類 Object 的方法。

  • 如果自定義 Key 是 Struct 的話,則會出現裝箱操作導致 GC Alloc。(舊版本的 Unity 支持 C# 不高,因此默認 Comparer 沒有對 Enum 進行處理,導致 Enum 作為 Key 也會造成 GC)

  • 導致相同數據的兩個對象判定不相等。

Comparer 構建

  • 在初始化 Dictionary 的時候需要構造對應的 Comparer。

  • 如果沒有傳入 Comparer 的時候,會根據 Key 的類型自動創建 Comparer。

  • 其中進行插入,查找等操作時候,通過調用 Comparer 的 GetHashCode 和 Equal 方法來檢查對應桶是否存在對應Key。


免責聲明!

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



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