7

LINQ 固有の式の EqualityComparer を作成していますが、GetHashCode オーバーロード メソッドについてよくわかりません。以下のコードは正しいでしょうか?Id プロパティは長いプリミティブです。

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

1 に答える 1

13

おそらくobj、null でないかどうかを確認する必要があります。null リターンの場合0。正直なところ、Id の実装は、データ型のlong.NET Framework と完全に同じです。言い換えれば、null ではないチェックの後に簡単に呼び出すことができます。GetHashCodelongobj.Id.GetHashCode()

于 2012-11-06T04:16:18.893 に答える