GetHashCode()用于长原语

时间:2012-11-06 04:11:41

标签: c# .net iequalitycomparer

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

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

1 个答案:

答案 0 :(得分:11)

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