c#关于Dictionary中自定义Key
2024-08-27 06:07:26
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。
最新文章
- NodeJS 初体验
- [OrangePi] Building the system
- ios AudioQueueStart returns -50 录音失败问题
- R编程感悟
- Objective-C 学习记录--toches、Motion/Size/Rect/Point/CGFloat/protocol
- JavaScript要点 (三) 保留关键字
- Python之创建tuple
- hdu2488 dfs
- add BOM to fix UTF-8 in Excel
- OSGI学习总结
- iOS 要定义自己的导航栏button样式Button Image 执行出彩是不一样的与原来的颜色 -解
- JavaScript一个whenReady函数,监听及注册事件
- ssm web.xml配置解析
- [ExtJS5学习笔记]第七节 Extjs5的组件components及其模板事件方法学习
- 微信小程序入门三实战
- linux中sogou输入法崩溃重启
- 关于 JavaScript 的 null 和 undefined,判断 null 的真实类型
- MapperScan和ComponentScan同时使用问题
- eclipse中一些常见svn图标的含义
- mysql-8.0.12-winx64 解压版安装(转)