One of my C# books (C# 3.0 Cookbook by Hillyard and Teilhet) in giving an example of a Square
class writes the GetHashCode
as
public override int GetHashCode ( )
{
return this.Height.GetHashCode() | this.Width.GetHashCode();
}
I'm wondering why this is considered a good hash code. Becuase the table for an |
operation is
x | y | x OR y
--------------
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 1
which means that 3/4 of the time the result of the operation is 1
. So if you have miscellaneous int
s w, x, y, z
that means the chance that w | x == y | z
is not as small as it could be (if ^
was used, for example).
Is my understanding of this corret? Or is there a good reason why |
is used for the hashing function?