William,
I think that this is part of it, but depending on the object, that might
not always be the case. For example, if you were doing case-sensitive
comparisons of strings, then I would assume that the hash code for the
string would be very quick, since it is generated once (due to the fact that
strings are immutable). Calling GetHashCode over and over again would be
quick.
Also, cycling through 10 items and doing a comparison is probably much
quicker than generating hashcodes for everything (remember, a hashcode has
to be generated on lookup, as well as insertion and deletion). This is
probably where you see the speed the most.
Hope this helps.