I am trying to understand what object.GetHashCode() . I read that it is used by collections to uniquely identify keys. But I wanted to check it, and the result is not the one I expected.
struct Animal { public string Name { get; set; } public int Age { get; set; } public Animal(string name, int age) : this() { Name = name; Age = age; } public override int GetHashCode() { return Age.GetHashCode(); } } object doggy = new Animal("Dog", 25); object cat = new Animal("Cat", 25); Hashtable table = new Hashtable(); table.Add(doggy, "Dog"); table.Add(cat, "Cat"); Console.WriteLine("{0}", table[cat]); Console.WriteLine("{0}", table[doggy]);
I would expect “Cat” to overwrite “Dog” or some kind of error, telling me that “key already exists”, but the output
"Cat dog"
Mads Lee Jensen
source share