J'ai une méthode avec un paramètre HashSet. Et j'ai besoin de faire des Contains insensibles à la casse dans cette méthode :
public void DoSomething(HashSet<string> set, string item)
{
var x = set.Contains(item);
...
}
Existe-t-il un moyen de rendre un HashSet existant insensible à la casse (sans en créer un nouveau) ?
Je suis à la recherche d'une solution offrant les meilleures performances.
Modifier
Les contenants peuvent être appelés plusieurs fois. Ainsi, les extensions IEnumerable ne sont pas acceptables pour moi, car elles sont moins performantes que la méthode native HashSet Contains.
Solution
Puisque la réponse à ma question est NON, c'est impossible, j'ai créé et utilisé la méthode suivante :
public HashSet<string> EnsureCaseInsensitive(HashSet<string> set)
{
return set.Comparer == StringComparer.OrdinalIgnoreCase
? set
: new HashSet<string>(set, StringComparer.OrdinalIgnoreCase);
}