当前位置:首页 > Windows程序 > 正文

c#关于Dictionary中自定义Key

2024-03-31 Windows程序

标签:

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。

技术图片

标签:

原文地址:https://www.cnblogs.com/smallrainf/p/11746227.html

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/8725.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494583访问次数
  • 建站天数
  • 友情链接