Ich habe diese Frage gelesen , warum dies nicht möglich ist, aber keine Lösung für das Problem gefunden.
Ich möchte ein Element aus einem .NET abrufen HashSet<T>
. Ich suche nach einer Methode, die diese Signatur haben würde:
/// <summary>
/// Determines if this set contains an item equal to <paramref name="item"/>,
/// according to the comparison mechanism that was used when the set was created.
/// The set is not changed. If the set does contain an item equal to
/// <paramref name="item"/>, then the item from the set is returned.
/// </summary>
bool TryGetItem<T>(T item, out T foundItem);
Das Durchsuchen des Satzes nach einem Gegenstand mit einer solchen Methode wäre O (1). Die einzige Möglichkeit, ein Element von a abzurufen, HashSet<T>
besteht darin, alle Elemente aufzulisten, die O (n) sind.
Ich habe keine andere Problemumgehung für dieses Problem gefunden, als meine eigene zu erstellen HashSet<T>
oder eine zu verwenden Dictionary<K, V>
. Irgendeine andere Idee?
Hinweis:
Ich möchte nicht überprüfen, ob HashSet<T>
der Artikel enthalten ist. Ich möchte den Verweis auf das Element erhalten, das in der gespeichert ist, HashSet<T>
da ich es aktualisieren muss (ohne es durch eine andere Instanz zu ersetzen). Das Element, an das ich übergeben würde, TryGetItem
wäre gleich (gemäß dem Vergleichsmechanismus, den ich an den Konstruktor übergeben habe), aber es wäre nicht dieselbe Referenz.