Case Insensitive Dictionary不起作用

时间:2011-06-15 02:26:33

标签: 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"))

控制台每次都显示“False”。它应该显示“真实”。

如果我使用:

Console.WriteLine(test."frog")) 

我收到KeyNotFoundException。

似乎完全忽略了Comparer参数。

发生了什么事?

1 个答案:

答案 0 :(得分:15)

正如暗示here,这是一个简单的拼写错误。

问题是System。 StringComparison .OrdinalIgnoreCase是整数枚举。
它应该是System。 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)