问题描述
|
我花了几个小时试图弄清楚为什么我的通用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参数。
到底是怎么回事?
解决方法
正如这里所暗示的,这是一个简单的拼写错误。
问题是System.StringComparison.OrdinalIgnoreCase是一个整数枚举。
它应该是System.StringComparer.OrdinalIgnoreCase
New 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)