2017-07-18 3 views
1

Ist es möglich, den Index des Werts in HashSet abzurufen?Index des Werts im Hashset erhalten C#

Ich habe einen Hashset:

HashSet<int> allE = mesh.GetAllNGonEdges(nGonTV); 

Und ich möchte Index der Wert abzurufen Funktion ähnlich Arrays: Array.IndexOf(...)

+2

'HashSet's Idee ist, dass die Reihenfolge der Elemente keine Rolle spielt. –

Antwort

6

Der "Index" ist bedeutungslos in einem HashSet - es nicht ist garantiert Dasselbe gilt für die Reihenfolge der Anzeigen. Sie kann sich beim Hinzufügen und Entfernen von Einträgen im Laufe der Zeit ändern (auf nicht garantierte Weise, z. B. wenn Sie einen neuen Eintrag hinzufügen, der in der Mitte enden könnte, am Ende, am Anfang; Es könnte alles andere neu ordnen ...) Es gibt nicht einmal eine Garantie, dass Sie die gleiche Reihenfolge sehen, wenn Sie iter aß über den Satz mehrmals ohne Modifizierung zwischen den Zeiten, obwohl ich erwarten würde, dass in Ordnung zu sein.

können Sie erhalten den aktuellen Index mit so etwas wie:

var valueAndIndex = hashSet.Select((Value, Index) => new { Value, Index }) 
          .ToList(); 

... aber Sie müssen sehr bewusst sein, dass der Index in dem Eintrag nicht angeboren ist, und ist im Grunde instabil .

Verwandte Themen