|
|
1
12
根据您的评论,您还没有实现GetHashCode。我很惊讶这门课居然能用字典,除非你总是要求 相同的 您输入的密钥。我建议实现以下内容:
那
假定
请注意,通过使用
你应该 将您的字段设置为私有,仅将其作为属性公开。如果这将被用作字典中的关键字,我 强烈地 建议你也把它们变成只读的。在字典中使用键时更改键的内容可能会导致以后“无法修复”。 |
|
|
2
7
GetHashCode方法的默认实现使用对象的引用,而不是对象中的值。为了使其工作,您必须使用与将数据放入字典时相同的对象实例。
实施
(这与Point结构使用的实现相同。) 在字典中使用时,该方法的任何实现都会为任何给定的参数值返回相同的哈希码。仅仅为所有值返回相同的哈希码实际上也是可行的,但字典的性能会变差(查找键会变成O(n)操作而不是O(1)操作)。为了获得最佳性能,该方法应在该范围内均匀分布哈希码。 如果您的数据存在严重偏差,上述实现可能无法提供最佳性能。例如,如果你有很多下限和上限相同的范围,它们都会得到零哈希码。在这种情况下,这样的方法可能会更好:
您应该考虑使类不可变,即使其属性为只读,并且只在构造函数中设置它们。如果你在字典中更改对象的属性,它的哈希码就会改变,你将无法再访问该对象。 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
prayner · 更新嵌套字典包含列表中的项 1 年前 |
|
|
KGB91 · 初始化一个用C存储函数的字典# 1 年前 |
|
|
Pavel Foltyn · 如何在C中生成逆字典# 1 年前 |
|
|
user24242514 · 将嵌套查询字符串请求转换为字典 1 年前 |
|
|
Pernoctador · Python映射可以复制吗?我需要参考地图 1 年前 |
|
|
masher · 如何将字典键的值直接赋值给另一个变量? 2 年前 |
|
|
Lyapunov1729 · 如何按项目连接字典 2 年前 |