如何在不区分大小写模式下使用 HashSet.Contains() 方法?
如何在不区分大小写模式下使用 HashSet
方法?
How to use HashSet<string>.Contains()
method in case -insensitive mode?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用自定义比较器创建
HashSet
:You can create the
HashSet
with a custom comparer:您需要使用正确的
IEqualityComparer
创建它:You need to create it with the right
IEqualityComparer
:正如其他答案所证明的那样,这里没有必要,但在不使用字符串的其他情况下,您可以选择实现
IEqualityComparer
,然后可以使用.包含重载。这是一个使用字符串的示例(同样,其他答案表明已经有一个可以使用的字符串比较器来满足您的需求)。许多围绕
IEnumerable
的方法都有接受此类比较器的重载,因此最好了解如何实现它们。然后使用它
It's not necessary here, as other answers have demonstrated, but in other cases where you are not using a string, you can choose to implement an
IEqualityComparer<T>
and then you can use a.Contains
overload. Here is an example using a string (again, other answers have shown that there is already a string comparer you can use that meets your needs). Many methods surroundingIEnumerable<T>
have overloads that accept such comparers, so it's good to learn how to implement them.And then use it
您应该使用构造函数,它允许您指定
IEqualityComparer
你想使用。StringComparer 对象提供一些常用的比较器作为静态属性。
You should use the constructor which allows you to specify the
IEqualityComparer
you want to use.The StringComparer object provides some often used comparer as static properties.