首页 > 解决方案 > 平等比较器具有稳定的 HashCode 和忽略变音符号的选项?

问题描述

我正在寻找一个IEqualityComparer<String>支持稳定的HashCode,即执行/进程之间的相同 HashCode 。我还需要它来忽略大小写和非间距组合字符(例如变音符号)。

在.NET中是否有任何“简单”的方法可以实现这一点?我已经开始使用忽略大小写的稳定 HashCode 开始我的自定义实现,但我开始希望我可以以某种方式使用.NET中已经存在的实现。

内置的字符串比较器在procesee之间向HashCodes添加了一些随机种子以使其不稳定(我认为因为他们不能保证它在.NET运行时之间保持稳定?)但我认为我可以通过确保HashCodes来处理我移动到另一个运行时时,persist 会被擦除/重建。

无论如何,有没有办法访问内部校验和计算(没有随机性)?也许有反思?


更新:我不是原因专家,但很明显 HashCode 在运行时的计算方式不同。我需要它是因为我有一个基于磁盘的查找索引,它使用字符串的哈希码作为键,并且由于它是持久的,我显然需要它们在运行时相同。当然,我可以用我喜欢的任何方式计算我自己的校验和,但由于 .NET 已经在这方面做得很好,我希望我能利用这一点。但是如果没有“种子”或您想要称呼它的东西,那就是使哈希码在运行时之间有所不同的东西。

标签: c#string.net-corechecksumiequalitycomparer

解决方案


推荐阅读