C# Dictionary.ContainsKey StringComparer.Ordinal
我正在使用C#和.NET3.5的词典。我创建了一个C# Dictionary.ContainsKey StringComparer.Ordinal,c#,dictionary,containskey,C#,Dictionary,Containskey,我正在使用C#和.NET3.5的词典。我创建了一个字典对象,并传入了StringComparer.Ordinal相等比较器。但是,当我执行以下代码时,我并没有得到预期的结果: Dictionary<string, int> theDictionary = new Dictionary<string, int>(StringComparer.Ordinal); theDictionary.Add("First", 1); bool exists = theDictionar
字典
对象,并传入了StringComparer.Ordinal
相等比较器。但是,当我执行以下代码时,我并没有得到预期的结果:
Dictionary<string, int> theDictionary = new Dictionary<string, int>(StringComparer.Ordinal);
theDictionary.Add("First", 1);
bool exists = theDictionary.ContainsKey("FIRST"); // equals true, when it should not
Dictionary theDictionary=新字典(StringComparer.Ordinal);
添加(“第一”,1);
bool exists=theDictionary.ContainsKey(“第一”);//当它不应该时,等于真
我在这里看不到什么?你确定没有使用
这段代码使用C#v3.5编译器为我打印false:
using System;
using System.Collections.Generic;
static class Program
{
static void Main()
{
Dictionary<string, int> theDictionary = new Dictionary<string, int>(StringComparer.Ordinal);
theDictionary.Add("First", 1);
bool exists = theDictionary.ContainsKey("FIRST");
Console.WriteLine(exists);
}
}
使用系统;
使用System.Collections.Generic;
静态类程序
{
静态void Main()
{
Dictionary theDictionary=新字典(StringComparer.Ordinal);
添加(“第一”,1);
bool exists=dictionary.ContainsKey(“第一”);
Console.WriteLine(存在);
}
}
在我的机器上计算为false。你能再检查一下你读的值是否正确吗?看起来像是野餐问题。嗯,当你看到“System.OrdinalComparer”时,实际上有点困惑。让你觉得你真的提供了StringComparer.Ordinal,因为你在任何地方都看不到“IgnoreCase”…@AustinSalonenStringComparer.Ordinal
独立于语言。如果我们必须阅读来自第三方库的词典,这一点不难忽略。