我有带有 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);
}