区分大小写字典键(Case Sensitive Dictionary Keys)

2019-07-17 12:19发布

我发现很多信息的有关使词典能够做到不区分大小写的查找窗口在网络上这样的,如果我添加了一个键/值对的(“A”,“值”)调用

MyDict["a"] == MyDict["A"]

将返回true。

我想知道的是为什么我得到一个“密钥已经被添加”的错误,当我做

MyDict.Add("A", "value1");
MyDict.Add("a", "value2");

如果我定义我的字典做区分大小写的查找窗口。 难道就没有办法定义字典可以添加不同的套管钥匙?

Answer 1:

字典是区分大小写的默认 - 你不需要做任何事情。

Dictionary<string, string> myDict = new Dictionary<string, string>();
myDict.Add("A", "value1");
myDict.Add("a", "value2");

看到你的代码的在线在这里工作: ideone 。

如果你与你的代码得到一个错误,那是因为那些关键之一在你的字典里已经存在。



Answer 2:

所有的Dictionaries都区分sensisitive。 但是你可以使用由提供的不区分大小写comparers StringComparer类来创建不区分大小写键的字典。

从检查它ideone 。



Answer 3:

如果他用StringDictionary类OP实际上是正确的。 微软的网站称,它的存储之前的关键转换为小写( https://msdn.microsoft.com/en-us/library/system.collections.specialized.stringdictionary(v=vs.110).aspx )。 为了使键大小写敏感的,使用通用字典马克Byers的建议很好的作品。 如果你想要一个不区分大小写键,StringDictionary效果很好。



文章来源: Case Sensitive Dictionary Keys