10

我在网上找到了大量关于使字典能够进行不区分大小写的查找的信息,例如,如果我添加了 ("A", "value") 调用的键/值对

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

将返回真。

我想知道的是为什么我这样做时会收到“已添加密钥”错误

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

如果我定义我的字典来进行区分大小写的查找。有没有办法定义一个字典来添加不同的大小写键?

4

3 回答 3

13

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

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

在此处在线查看您的代码:ideone

如果您的代码出现错误,那是因为其中一个键已经存在于您的字典中。

于 2012-12-21T18:29:41.083 回答
9

所有Dictionaries都是区分大小写的。但是您可以使用该类提供的不区分大小写的字符串比较器StringComparer来创建具有不区分大小写的字符串键的字典。

ideone检查它。

于 2012-12-21T18:32:18.917 回答
3

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

于 2015-05-06T17:29:45.707 回答