title: When do we do GetHashCode() for a Dictionary?
body: <p>I have used Dictionary(TKey, TValue) for many purposes. But I haven't encountered any scenario to implement GetHashCode() which I believe is because my keys were of primary types like int and string.
  I am curious to know the scenarios (real world examples) when one should use a custom object for key and thus implement methods GetHashCode() Equals() etc.</p>
  
  <p>And, does using a custom object for key necessitate implementing these functions?</p>