代码之家  ›  专栏  ›  技术社区  ›  abelenky

如何在对象上实现GetHashCode()?[副本]

  •  4
  • abelenky  · 技术社区  · 17 年前

    复制 : What is the best algorithm for an overridden System.Object.GetHashCode?


    如果您编写了一个包含各种数据成员的对象,那么如何智能地实现GetHashCode()?

    一位开发人员告诉我,他只是对相关数据字段的散列进行XOR(^operator),但我不相信这是一个“最佳实践”实现。

    您将如何编写这些函数?

    1 回复  |  直到 9 年前
        1
  •  1
  •   shsteimer    17 年前

    (Member1.ToString() + "|" + Member2.ToString()).GetHasCode();
    

    在我的例子中,我知道我永远不会在成员中使用管道,所以我知道结果会非常好。

    实际上,在我的例子中,我实现ToString是为了调试,所以我只使用了:

    this.ToString().GetHashCode();
    

    Xors是我经常看到的另一种方法。

    推荐文章