[c#] Correct way to override Equals() and GetHashCode()