首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`new Dictionary<string,Dictionary<string”是如何工作的?

“`new Dictionary<string,Dictionary<string”是如何工作的?
EN

Stack Overflow用户
提问于 2022-06-02 19:44:50
回答 1查看 43关注 0票数 -2

我在四处寻找一种方法,让字典键/哈希集string变得不区分大小写。我在SO上甚至在MS网站上都找到了很多答案。

据我所见,答案似乎是说,通过将IEqualityComparer<TKey>设置为DictionaryHashSetStringComparer.CurrentCultureIgnoreCase (或类似的东西),这将使它看起来好像键集将不区分大小写。但是不,他们说它设置了相等操作符,这是不同的。

我熟悉的散列集将键对象转换为散列数值,然后用于访问可能包含您要查找的键的桶。然后,使用相等操作符来检查该桶是否实际包含您要查找的值。

如果是这样的话,那么可以想象,aA可能在不同的桶中,从而允许在没有冲突的情况下添加这两项,或者检查而找不到另一项。我必须假设情况并非如此,因为这会破坏大量的代码,那么这里到底发生了什么呢?窗帘后面发生了什么事?

EN

回答 1

Stack Overflow用户

发布于 2022-06-02 19:58:48

在.NET中,两个“相等”的对象(并用作散列键)必须生成相同的哈希代码。因此,如果您使用不区分大小写的比较器创建字典,那么aA肯定会映射到相同的“桶”。这种情况发生在StringComparer.CurrentCultureIgnoreCase返回的对象中,该对象生成哈希代码,其方式是保留相等关系。

请注意,两个不等于的对象可能生成相同的哈希代码,但是Dictionary类首先检查哈希代码以查看两个键是否相等,如果可以,则检查它们是否相等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72481572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档