使用结构struct作为Dictionary<TKey,TValue>的键

本文介绍了如何将自定义的struct类型作为Dictionary<TKey,TValue>的键。在使用struct作为键时,需要实现IEqualityComparer<T>接口来定义Equals和GetHashCode方法。通过一个商场储物柜的例子,展示了这个过程。文章最后提到了存在的装箱、拆箱问题,并推荐了优化方案的链接。" 115335646,9703042,Win10安装MySQL 8.0.23详步骤:解决系统错误5拒绝访问,"['数据库管理', 'MySQL安装', 'Windows', '系统错误解决']
摘要由CSDN通过智能技术生成

我们经常用简单数据类型,比如int作为泛型Dictionary<TKey,TValue>的key,但有时候我们希望自定义数据类型作为Dictionary<TKey,TValue>的key,如何做到?

 

如果我们想自定义一个struct类型作为key,就必须针对该struct定义一个实现IEqualityComparer<T>接口的比较类,实现该接口的2个方法:Equals()方法和GetHashCode()方法,前者用来比较两个key是否相等,后者用来获取key的哈希值。

 

模拟这样一个场景:当我们去商场购物,经常需要把随身物品存放到某个储物柜,然后拿着该储物柜的钥匙。把钥匙抽象成key,不过,稍后会定义成一个struct类型的key,把随身物品抽象成值,那么所有的储物柜就是一个Dictionary<TKey,TValue>键值对集合。

 

定义一个struct类型的key,并且针对该struct定义一个比较类。

public struct GoodsKey
    {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值