重写GetHashCode
这个问题在这里已经有了答案:
当你重写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