微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net – Case Insensitive 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”.它应该显示“真实”.

如果我使用:

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)

原文地址:https://www.jb51.cc/vb/255323.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐