Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialMark Blanford
427 PointsIf the hashcode is the memory address by default how can it also possibly *not* be unique?
Why would GetHashCode() need to be overridden under normal circumstances if by default it returns the memory address? Two different objects can't have the same memory address, so is it not inherently unique? Or is this in case a different object has had its GetHashCode method altered so that it happens to return something that looks identical to an existing memory address (but is in fact just an integer and a coincidence)? This is very confusing!
3 Answers
Steven Parker
231,268 PointsThe issue is that you don't want the hash code to always be unique. In particular, if two things are equal then they must return the same value for GetHashCode()
.
So when you change how things are determined to be equal, you're expected to also change the hash method so equal items will return the same thing.
Richard Külling
9,465 PointsThat explanation needs to be in the video imo.
Mark Blanford
427 PointsGot it, that makes sense. Thank you!