我花了几个小时试图弄清楚为什么我的通用Dictionary(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”。它应该显示“True”。

如果我使用:
Console.WriteLine(test."frog"))

我收到一个KeyNotFoundException。

似乎完全忽略了Comparer参数。

到底是怎么回事?

最佳答案

here所示,这是一个简单的拼写错误。

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

New System.Collections.Generic.Dictionary(String,String)(System.StringComparison.OrdinalIgnoreCase)实际上正在调用 New(容量为整数)重载构造函数,并传递5。

因此,为了使所有功能都能按预期工作,实例化行应显示为:

Dim test As New System.Collections.Generic.Dictionary(Of String, String)(System.StringComparer.OrdinalIgnoreCase)

关于vb.net - 不区分大小写的词典不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6352364/

10-09 18:42