У меня есть метод с параметром HashSet. И я должен сделать нечувствительный к регистру, Содержит в нем:
public void DoSomething(HashSet<string> set, string item)
{
var x = set.Contains(item);
...
}
Это - какой-либо способ сделать существующий HashSet нечувствительным к регистру (не создавайте новый)?
Я ищу решение с лучшей производительностью.
Править
Содержит может быть назван многократно. Таким образом, расширения IEnumerable не приемлемы для меня должный понизить производительность, чем собственный HashSet Содержит метод.
Решение
С тех пор ответ на мой вопрос нет, это невозможно, я создал и использовал следующий метод:
public HashSet<string> EnsureCaseInsensitive(HashSet<string> set)
{
return set.Comparer == StringComparer.OrdinalIgnoreCase
? set
: new HashSet<string>(set, StringComparer.OrdinalIgnoreCase);
}
Можно теперь использовать
set.Contains(item, StringComparer.OrdinalIgnoreCase);
, не будучи должен воссоздать Вас HashSet