【发布时间】:2017-02-08 02:10:56
【问题描述】:
是
public override int GetHashCode()
{
return Word.GetHashCode();
}
真的一样
public override int GetHashCode()
{
return (int) Word.GetHashCode() * 7;
}
关于唯一性?
Word 的类型为 String
编辑:我忘了说,在程序中实现哪个更好,选项 1 或 2?
【问题讨论】:
-
由于哈希码既不是必需的也不是唯一的,因此您的问题的答案是“是”,因为这两种实现都会产生非唯一的哈希码。
-
与
Word.GetHashCode()的任何碰撞在乘以 7 后仍然会发生碰撞。而且演员表也毫无意义。 -
扩展 juharr 的评论,如果
World.GetHashCode()为 worldA 和 worldB 生成 6,那么World.GetHashCode() * 7为 worldA 和 worldB 生成 42... -
你到底是什么意思?如果您在第一个单词中获得两个不同的唯一结果,您将从第二个单词中获得两个不同的唯一结果。同样,如果您从第一个单词中的两个单词中得到两个相同的结果,那么第二个单词也会产生两个相同的结果。从查看代码来看,这似乎有些明显,所以感觉您的问题比我认为可以通过详细说明来解决的问题更多。
-
(3 * 7) == (3 * 7)真的和3 == 3一样吗?
标签: c# gethashcode hash-code-uniqueness