我有一个带有HashSet参数的方法.我需要在其中进行不区分大小写的包含:
public void DoSomething(HashSet<string> set, string item)
{
var x = set.Contains(item);
...
}
有没有办法使现有的HashSet不区分大小写(不创建新的HashSet)?
我在寻找性能最好的解决方案.
Edit个
可以多次调用Contains.所以IEnumerable扩展对我来说是不可接受的,因为它的性能低于原生HashSet包含的方法.
Solution
因为,我的问题的答案是否定的,这是不可能的,所以我创建并使用了以下方法:
public HashSet<string> EnsureCaseInsensitive(HashSet<string> set)
{
return set.Comparer == StringComparer.OrdinalIgnoreCase
? set
: new HashSet<string>(set, StringComparer.OrdinalIgnoreCase);
}