Is there a way to make .NET Core GetHashCode deterministic

后端 未结 2 930
长情又很酷
长情又很酷 2021-01-02 01:10

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

相关标签:
2条回答
  • 2021-01-02 01:43

    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.

    0 讨论(0)
  • 2021-01-02 01:50

    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.

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