我有HashSet参数的方法。我需要在其中包含不区分大小写的包含内容:
public void DoSomething(HashSet<string> set, string item)
{
var x = set.Contains(item);
...
}
有什么办法可以使现有的HashSet不区分大小写(不创建新的)?
我正在寻找性能最佳的解决方案。
编辑
包含可以被多次调用。所以IEnumerable扩展对我来说是不可接受的,因为它的性能低于本机的HashSet Contains方法。
解
既然,回答我的问题是“否”,那是不可能的,我创建并使用了以下方法:
public HashSet<string> EnsureCaseInsensitive(HashSet<string> set)
{
return set.Comparer == StringComparer.OrdinalIgnoreCase
? set
: new HashSet<string>(set, StringComparer.OrdinalIgnoreCase);
}