我花了几个小时试图弄清楚为什么我的通用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/