7

我正在为 LINQ 不同的表达式编写 EqualityComparer,但我不太确定 GetHashCode 重载方法。下面的代码是否正确?Id 属性是一个长原语。

public int GetHashCode(Deal obj)
{
   return ((int)obj.Id) ^ ((int)(obj.Id >> 32)); ;
}
4

1 回答 1

13

可能您应该检查是否obj不为空。在空返回的情况下0。老实说,您对 Id 的实现与数据类型long的 .NET Framework 完全相同。换句话说,您可以在非空检查之后简单地调用。GetHashCodelongobj.Id.GetHashCode()

于 2012-11-06T04:16:18.893 回答