社区
C#
帖子详情
自定的类如何才能用作dictionary的key?
种草德鲁伊
2010-11-13 04:47:30
比如
class KeyClass
{
public Type Type{ get; set; }
public string Name { get; set; }
}
是不是要重写GetHashCode Equals什么的?
...全文
279
10
打赏
收藏
自定的类如何才能用作dictionary的key?
比如 class KeyClass { public Type Type{ get; set; } public string Name { get; set; } } 是不是要重写GetHashCode Equals什么的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
种草德鲁伊
2010-11-14
打赏
举报
回复
看了一下dictionary的源码,确实也是这样。
福来哥
2010-11-14
打赏
举报
回复
[Quote=引用 8 楼 karascanvas 的回复:]
搞定了,GetHashcode和Equals两个方法都必须重写才行..
[/Quote]
你的意思是实现IEqualeable接口就可以了吗?
但我看你的类像是要实现索引一样!!!
种草德鲁伊
2010-11-14
打赏
举报
回复
搞定了,GetHashcode和Equals两个方法都必须重写才行..
bloodish
2010-11-13
打赏
举报
回复
[Quote=引用 5 楼 karascanvas 的回复:]
GetHashcode内部应该怎么编写呢。
[/Quote]
return (Name+Type.Name).GetHashcode();
绿色夹克衫
2010-11-13
打赏
举报
回复
重载Equals应该就行
种草德鲁伊
2010-11-13
打赏
举报
回复
[Quote=引用 4 楼 sp1234 的回复:]
值?那么你应该用值做key,而不是整个对象。
你也可以重写GetHashcode方法返回值。
[/Quote]
可能我描述的不够清晰,就是如果两个属性Type和Name的值都相等的话,就判定整个对象相等。
还想请教一下大师,这样的话,GetHashcode内部应该怎么编写呢。
以专业开发人员为伍
2010-11-13
打赏
举报
回复
[Quote=引用 2 楼 karascanvas 的回复:]
现在需要比较值,引用肯定不相等的...
[/Quote]
值?那么你应该用值做key,而不是整个对象。
你也可以重写GetHashcode方法返回值。
以专业开发人员为伍
2010-11-13
打赏
举报
回复
public Dictionary<KeyClass, MyResultType> 我的词典= new
Dictionary<KeyClass, MyResultType>();
种草德鲁伊
2010-11-13
打赏
举报
回复
[Quote=引用 1 楼 xiehuanxie 的回复:]
不写也可以, 用默认的Equals比较引用
[/Quote]
现在需要比较值,引用肯定不相等的...
xiehuanxie
2010-11-13
打赏
举报
回复
不写也可以, 用默认的Equals比较引用
根据value来定位
key
在C#的
Dictionary
中如何实现?
在C#中
Dictionary
位于System.Collections.Generic,其定义为:
Java
Dictionary
类
和 Hashtable
类
Hashtable是原始的 java.util 的一部分, 是一个
Dictionary
具体的实现。然而,Java 2 重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中。一旦该值被存储,就可以通过它的键来获取它。当使用一个哈希表,要指定
用作
键的对象,以及要链接到该键的值。可以实现Map接口来获得键/值存储功能。
Dictionary
类
是一个抽象
类
,用来存储键/值对,作用和Map
类
相似。 然后,该键经过哈希处理,所得到的散列码被
用作
存储在该表中值的索引。
VBA中
Dictionary
对象使用(
Key
,Value)
Dim dict ' 创建
Dictionary
Set dict = CreateObject("Scripting.
Dictionary
") ' 增加项目 dict.Add "A", 300 dict.Add "B", 400 dict.Add "C", 500 ' 统计项目数 n = dict.Count ' 删除项目 dict.Remov...
C#中:字典
Dictionary
<
Key
, Value>的用法
在C#中,
Dictionary
的主要用途是提供快速的基于键值的元素查找。
Dictionary
的结构一般是这样的:
Dictionary
,它包含在System.Collections.Generic命名空间中。在使用
Dictionary
前,你必须对它的键
类
型和值
类
型进行声明。
Dictionary
按
Key
正反排序
使用过
Dictionary
的人都知道,当每一个Add里面的值都不会改变其顺序,所以需要需要对其排序的时候就用到Sorted
Dictionary
,但Sorted
Dictionary
并不是那么理想,其默认的方式只支持正序排序,想要反序排序时必须得靠自己重新编写代码,下面来看一个简单的
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章