Case Insensitive Dictionary不起作用

Mic*_*ues 7 vb.net generics dictionary case-insensitive

我花了几个小时试图弄清楚为什么我的泛型字典(Of String,String)不会忽略大小写.

这是我的代码:

Dim test As New System.Collections.Generic.Dictionary(Of String, String)(System.StringComparison.OrdinalIgnoreCase)
test.Add("FROG", "1")
Console.WriteLine(test.ContainsKey("frog"))
Run Code Online (Sandbox Code Playgroud)

控制台每次都显示"False".它应该显示"真实".

如果我使用:

Console.WriteLine(test."frog")) 
Run Code Online (Sandbox Code Playgroud)

我得到一个KeyNotFoundException.

看起来似乎完全忽略了Comparer参数.

到底是怎么回事?

Mic*_*ues 16

正如这里暗示的那样,这是一个简单的拼写错误.

问题是系统.StringComparison .OrdinalIgnoreCase是一个整数枚举.
它应该是系统.StringComparer .OrdinalIgnoreCase

新的System.Collections.Generic.Dictionary(Of String,String)(System.StringComparison.OrdinalIgnoreCase)实际上正在调用New(capacity As Integer)重载构造函数,并传递5.

因此,要使所有内容按预期工作,实例化行应为:

Dim test As New System.Collections.Generic.Dictionary(Of String, String)(System.StringComparer.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)