
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Creating a Priority Queue
|
603
to create a hash value for your object. The return values from each method can either
be added or XORed together.
Once an object is in use as a key in a
Hashtable or Dictionary<T,U>, it should never
return a different value for the hash code. Originally, it was documented that hash
codes must be immutable, as the authors of
Hashtable or Dictionary<T,U> thought
that this should be dealt with by whoever writes
GetHashCode. It doesn’t take much
thought to realize that for mutable types, if you require both that the hash code never
changes and that
Equals represents the equality of the mutable objects and that if
a.Equals(b), then a.GetHashCode( ) == b.GetHashCode( ), then the only possible
implementation of GetHashCode is one that returns the same integer constant for all
values.
The
GetHashCode method is called when you are using this object as the key in a
Hashtable or Dictionary<T,U> object. Whenever your object is added to a Hashtable
or Dictionary<T,U> as a key, the GetHashCode method is called on your object to
obtain a hash code. This hash code must not change while your object is a key in the
Hashtable or Dictionary<T,U>. If it does, the Hashtable or Dictionary<T,U> will not be
able to find your object.
See Also
See the “GetHashCode Method,” “Dictionary<T,U> ...