我正在为LINQ distinct表达式编写EqualityComparer,我对GetHashCode重载方法不太确定。以下代码是否正确? Id属性是一个很长的原语。
public int GetHashCode(Deal obj)
{
return ((int)obj.Id) ^ ((int)(obj.Id >> 32)); ;
}
答案 0 :(得分:11)
您可能应该检查obj
是否为空。如果返回null 0
。老实说,long
Id的实现与GetHashCode
数据类型的.NET Framework long
完全相同。换句话说,您可以在非空检查后简单地调用obj.Id.GetHashCode()
。