C#: GetHashCode() might cause OverflowException