Zugriff auf einen Dictionary.Keys-Schlüssel über einen numerischen Index

Ich verwende ein Dictionary<string, int>, wobei das int eine Zählung der Schlüssel ist.

Nun muss ich auf den zuletzt eingefügten Schlüssel innerhalb des Dictionarys zugreifen, aber ich kenne den Namen des Schlüssels nicht. Der offensichtliche Versuch:

int LastCount = mydict[mydict.keys[mydict.keys.Count]];

funktioniert nicht, weil Dictionary.Keys keinen []-Indexer implementiert.

Ich frage mich nur, ob es eine ähnliche Klasse gibt? Ich dachte daran, einen Stack zu verwenden, aber der speichert nur einen String. Ich könnte nun meine eigene Struktur erstellen und dann einen Stack<MyStruct> verwenden, aber ich frage mich, ob es eine andere Alternative gibt, im Wesentlichen ein Dictionary, das einen []-Indexer auf den Schlüsseln implementiert?

Das können Sie immer tun:

string[] temp = new string[mydict.count];
mydict.Keys.CopyTo(temp, 0)
int LastCount = mydict[temp[mydict.count - 1]]

Aber ich würde es nicht empfehlen. Es gibt keine Garantie, dass der zuletzt eingefügte Schlüssel am Ende des Arrays liegt. Die Reihenfolge für Keys auf MSDN ist nicht spezifiziert und kann sich ändern. In meinem sehr kurzen Test scheint es in der Reihenfolge der Einfügung zu sein, aber Sie wären besser dran, wenn Sie eine ordnungsgemäße Buchhaltung wie einen Stack einbauen würden - wie Sie vorschlagen (obwohl ich die Notwendigkeit einer Struktur basierend auf Ihren anderen Aussagen nicht sehe) - oder einen einzelnen Variablen-Cache, wenn Sie nur den letzten Schlüssel wissen müssen.

Kommentare (0)

Ich denke, Sie können so etwas tun, die Syntax könnte falsch sein, havent verwendet C# in eine Weile Um das letzte Element zu erhalten

Dictionary.KeyCollection keys = mydict.keys;
string lastKey = keys.Last();

oder verwenden Sie Max anstelle von Last, um den Maximalwert zu erhalten, ich weiß nicht, was besser zu Ihrem Code passt.

Kommentare (2)

Ich weiß nicht, ob das funktionieren würde, weil ich ziemlich sicher bin, dass die Schlüssel nicht in der Reihenfolge gespeichert werden, in der sie hinzugefügt werden, aber Sie könnten die KeysCollection zu einer Liste casten und dann den letzten Schlüssel in der Liste erhalten ... aber es wäre einen Blick wert.

Die einzige andere Sache, die mir einfällt, ist, die Schlüssel in einer Nachschlage-Liste zu speichern und die Schlüssel zur Liste hinzuzufügen, bevor man sie zum Wörterbuch hinzufügt... das ist nicht schön, aber...

Kommentare (3)