GetHashCode()用于长原语

yul*_*lun 5 .net c# iequalitycomparer

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

public int GetHashCode(Deal obj)
{
   return ((int)obj.Id) ^ ((int)(obj.Id >> 32)); ;
}
Run Code Online (Sandbox Code Playgroud)

Kir*_*huk 11

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