Ich habe Methode mit HashSet-Parameter. Und ich tun muß Groß- und Kleinschreibung in ihrem Inhalt:Make HashSet <string> case-insensitive
public void DoSomething(HashSet<string> set, string item)
{
var x = set.Contains(item);
...
}
Ist es eine Möglichkeit, bestehende HashSet Groß- und Kleinschreibung zu machen (nicht schaffen neue)?
Ich suche eine Lösung mit bester Leistung.
bearbeiten
enthält, kann mehrmals aufgerufen werden. IEnumerable-Erweiterungen sind daher aufgrund geringerer Leistung als die native HashSet Contains-Methode für mich nicht akzeptabel.
Lösung
Da Antwort auf meine Frage ist nicht, es ist unmöglich, habe ich erstellt und verwendet folgende Methode:
public HashSet<string> EnsureCaseInsensitive(HashSet<string> set)
{
return set.Comparer == StringComparer.OrdinalIgnoreCase
? set
: new HashSet<string>(set, StringComparer.OrdinalIgnoreCase);
}
Sie müssen wahrscheinlich eine neue erstellen ... –
Mögliche Duplikat: http://StackOverflow.com/Questions/2667635/How-to-use-hashsetstring-contains-method-in-case-insensitive- mode (s. user414076's answer) –
Sie müssen sich im Voraus entscheiden, ob der 'HashSet' Groß- und Kleinschreibung berücksichtigt, indem Sie einen Vergleicher liefern. Es ist jedoch eine Überlegung wert, dass die Menge {"A", "a"} nur ein Element enthält, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird. – spender