我花了几个小时试图弄清楚为什么我的泛型字典(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"))
如果我使用:
Console.WriteLine(test."frog"))
我得到一个KeyNotFoundException.
似乎完全忽略了Comparer参数.
到底是怎么回事?
正如暗示
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)