I am porting something from Java to C#. In Java the hashcode
of a ArrayList
depends on the items in it. In C# I always get the same hashcode from a List
...
Why is this?
For some of my objects the hashcode needs to be different because the objects in their list property make the objects non-equal. I would expect that a hashcode is always unique for the object's state and only equals another hashcode when the object is equal. Am I wrong?
In order to work correctly, hashcodes must be immutable – an object's hash code must never change.
If an object's hashcode does change, any dictionaries containing the object will stop working.
Since collections are not immutable, they cannot implement GetHashCode
.
Instead, they inherit the default GetHashCode
, which returns a (hopefully) unique value for each instance of an object. (Typically based on a memory address)