为什么我的Dictionary <string,string>默认情况下不区分大小写?

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)

那我错了吗?字典是否默认情况下不区分大小写?

O. *_*per 6

不,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是用来检查是否按键aA发现.只有前者.
  • 然后,Add用于添加密钥A.它没有抱怨,即它不认为密钥已经存在.
  • 最后,Count用于检查字典条目的总数并正确输出2,即Aa.