Why is String.GetHashCode() implemented differently in 32-bit and 64-bit versions of the CLR?

后端 未结 2 1926
情深已故
情深已故 2021-01-01 14:47

What are the technical reasons behind the difference between the 32-bit and 64-bit versions of string.GetHashCode()?

More importantly, why does the 64-bit version se

相关标签:
2条回答
  • 2021-01-01 15:19

    Eric lippert has got a wondeful blog to this Curious property in String

    Curious property Revealed

    0 讨论(0)
  • 2021-01-01 15:34

    This looks like a known issue which Microsoft would not fix:

    As you have mentioned this would be a breaking change for some programs (even though they shouldn't really be relying on this), the risk of this was deemed too high to fix this in the current release.

    I agree that the rate of collisions that this will cause in the default Dictionary<String, Object> will be inflated by this. If this is adversely effecting your applications performance, I would suggest trying to work around it by using one of the Dictionary constructors that takes an IEqualityComparer so you can provide a more appropriate GetHashCode implementation. I know this isn't ideal and would like to get this fixed in a future version of the .NET Framework.

    Source: Microsoft Connect - String.GetHashCode ignores any characters in the string beyond the first null byte in x64 runtime

    0 讨论(0)
提交回复
热议问题