Jeg bruker en Dictionary<string, int>
hvor int
er en telling av nøkkelen.
Nå trenger jeg tilgang til den sist innsatte nøkkelen i ordboken, men jeg vet ikke navnet på den. Det åpenbare forsøket:
int LastCount = mydict[mydict.keys[mydict.keys.Count]];
fungerer ikke, fordi Dictionary.Keys
ikke implementerer en []-indeksering.
Jeg lurer bare på om det finnes en lignende klasse? Jeg tenkte å bruke en Stack, men den lagrer bare en streng. Jeg kunne nå lage min egen struct og så bruke en Stack<MyStruct>
, men jeg lurer på om det finnes et annet alternativ, egentlig en Dictionary som implementerer en []-indexer på Keys?
Du kan alltids gjøre dette:
string[] temp = new string[mydict.count];
mydict.Keys.CopyTo(temp, 0)
int LastCount = mydict[temp[mydict.count - 1]]
Men jeg vil ikke anbefale det. Det er ingen garanti for at den sist innsatte nøkkelen er på slutten av matrisen. Rekkefølgen for Keys på MSDN er uspesifisert og kan endres. I min svært korte test ser det ut til å være i rekkefølge etter innsetting, men det er bedre å bygge inn ordentlig bokføring som en stabel - som du foreslår (selv om jeg ikke ser behovet for en struktur basert på de andre uttalelsene dine) - eller en enkelt variabelbuffer hvis du bare trenger å vite den siste nøkkelen.
Jeg tror du kan gjøre noe slikt, syntaksen kan være feil, jeg har ikke brukt C# på en stund. For å hente det siste elementet
Dictionary<string, int>.KeyCollection keys = mydict.keys;
string lastKey = keys.Last();
eller bruk Max i stedet for Last for å få maksverdien, jeg vet ikke hva som passer best til koden din.
Jeg vet ikke om dette vil fungere, for jeg er ganske sikker på at nøklene ikke lagres i den rekkefølgen de legges til, men du kan caste KeysCollection til en List
Det eneste andre jeg kommer på, er å lagre nøklene i en oppslagsliste og legge dem til i listen før du legger dem til i ordboken... men det er ikke pent.