我在网上发现了很多关于让字典能够进行不区分大小写的查找的信息,如果我添加一个键/值对(“A”,“value”)调用
MyDict["a"] == MyDict["A"]
将返回true。
我想知道的是,当我这样做时,为什么我会收到“已添加密钥”错误
MyDict.Add("A", "value1");
MyDict.Add("a", "value2");
如果我将字典定义为区分大小写的查找。是否无法定义字典以便能够添加不同的套管密钥?
答案 0 :(得分:12)
默认情况下,字典区分大小写 - 您无需执行任何操作。
Dictionary<string, string> myDict = new Dictionary<string, string>();
myDict.Add("A", "value1");
myDict.Add("a", "value2");
在此处查看您在线工作的代码:ideone。
如果您的代码出现错误,那么因为其中一个密钥已存在于您的字典中。
答案 1 :(得分:8)
所有Dictionaries
都具有案例敏感性。但您可以使用StringComparer
类提供的不区分大小写的字符串比较器来创建不区分大小写的字符串键的字典。
从ideone检查。
答案 2 :(得分:2)
如果他使用StringDictionary类,那么OP实际上是正确的。 Microsoft的网站声明密钥在存储之前会转换为小写(https://msdn.microsoft.com/en-us/library/system.collections.specialized.stringdictionary(v=vs.110).aspx)。为了使密钥区分大小写,使用Generic Dictionary作为Mark Byers建议可以很好地工作。如果你想要一个不区分大小写的键,StringDictionary效果很好。