重写GetHashCode

这个问题在这里已经有了答案:

  • 什么是重写的System.Object.GetHashCode的最佳算法? 17个答案

  • 当你重写GetHashCode()你也需要重写Equals()operator==operator!= 。 并且要非常小心地满足这些方法的所有要求。

    这些准则在MSDN上。 最重要的报价:

    在非不可变类型中重写operator ==不是一个好主意。


    如果你使用resharper,它可以为你生成GetHashCode(),Equals和operator方法体。

    通过按Alt + Insert访问此菜单。

    http://www.jetbrains.com/resharper/webhelp/Code_Generation__Equality_Members.html


    在我个人的用法中,我只在覆写equals方法时才会覆盖它。 通常,我为对象做这些事,我知道我可能运行LINQ to Objects查询或其他比较操作。

    我通常会返回,如果说一个LINQ to SQL实体或DTO对象的主键值。 无论您返回什么,如果您不在本地存储该值,可能会产生意想不到的结果。

    HTH。

    链接地址: http://www.djcxy.com/p/39749.html

    上一篇: Overriding GetHashCode

    下一篇: Using IEqualityComparer GetHashCode with a tolerance