I just wasted few hours of debugging before realizing that contrary to .NET, in .NET Core, GetHashCode returns a different value every time you run your code. I totally unde
The pragmatic solution I have found to get string.GetHashCode to return predicable values across multiple executions is simply to switch back to classic .NET (4.6). Since there is nothing .NET Core specific about my code, the only work I had to do was create a new project. I debugged my code under .NET 4.6, fixed the bug and switched back to Core.
According to docs only change of framework should change the hash result. I too stumbled upon this. My solution was to create my own hash algorithm. It just took a few minutes as I didn't need anything fancy.
private static int GetSimpleHash(string s)
{
return s.Select(a => (int)a).Sum();
}
On a side note I have filed a bug for dotnet core 1.1. (string).GetHashCode() here.
Update
The hash can change due to framework or domain. This means that two subsequent runs of the same program can return different results.
Alas my bug report is moot and changed to a documentation update instead.
Update update
Documentation is updated to be a little bit more clear.