【发布时间】:2011-05-13 12:46:30
【问题描述】:
如您所知,GetHashCode 返回一个半唯一值,可用于标识集合中的对象实例。作为一种好的做法,建议重写此方法并实现您自己的方法。
我的问题是 - 您在处理自定义对象时会覆盖此方法吗?如果是这样,您使用什么算法来生成唯一 ID?
我正在考虑生成一个 GUID,然后从该标识符获取整数数据。
【问题讨论】:
-
阅读this question 及其答案。它概述了一个好的哈希码实现。对于可变对象 here 覆盖
GetHashCode也有很好的讨论。 -
我不知道“半唯一”是什么意思......一个值要么是唯一的,要么不是,而且哈希码不是唯一的。因此,它不允许您识别列表中的对象。覆盖
GetHashCode不是“一个好习惯”,这是您需要 时要做的事情(例如,将对象用作字典中的键),而不是因为您认为这是一个好习惯练习。 -
使用对象作为键可以被认为是识别集合中的对象——这正是我寻找关于什么是构建标识符的最佳算法的输入的原因。截至半唯一 ID:west-wind.com/Weblog/posts/4741.aspx
-
丹尼斯,你首先需要考虑你想要什么样的平等行为。对于默认的引用相等(对于具有标识的可变对象),您无需执行任何操作。
标签: c# algorithm methods overriding gethashcode