Rob*_*son 2 c# dictionary case-sensitive
我的理解是,默认情况下,Dictionary中的键检查是区分大小写的,但至少在我的软件中看来并非如此.为了获得TryGetValue和Contains的区分大小写的密钥检查,我必须按如下方式构造我的Dictionary:
Dictionary<string, string> a = new Dictionary<string,string>(StringComparer.Ordinal);
Run Code Online (Sandbox Code Playgroud)
那我错了吗?字典是否默认情况下不区分大小写?
不,Dictionary<string, string>默认情况下不区分大小写.
这个小应用程序可以很容易地显示出来:
using System;
using System.Collections.Generic;
public class MainClass
{
public static void Main(string[] args)
{
var newDict = new Dictionary<string, string>();
newDict.Add("a", "x");
Console.WriteLine(newDict.ContainsKey("a"));
Console.WriteLine(newDict.ContainsKey("A"));
newDict.Add("A", "y");
Console.WriteLine(newDict.ContainsKey("a"));
Console.WriteLine(newDict.ContainsKey("A"));
Console.WriteLine(newDict.Count);
}
}
Run Code Online (Sandbox Code Playgroud)
这输出:
True
False
True
True
2
Run Code Online (Sandbox Code Playgroud)
说明:
a添加密钥.ContainsKey是用来检查是否按键a和A发现.只有前者.Add用于添加密钥A.它没有抱怨,即它不认为密钥已经存在.Count用于检查字典条目的总数并正确输出2,即A和a.