Bir Dictionary<string, int>
kullanıyorum, burada int
anahtarın bir sayısıdır.
Şimdi, Sözlük içinde en son eklenen Anahtara erişmem gerekiyor, ancak adını bilmiyorum. Bariz bir girişim:
int LastCount = mydict[mydict.keys[mydict.keys.Count]];
çalışmaz, çünkü Dictionary.Keys
bir []-indexer uygulamamaktadır.
Sadece benzer bir sınıf olup olmadığını merak ediyorum? Bir Stack kullanmayı düşündüm ama o sadece bir string saklıyor. Şimdi kendi struct'ımı oluşturabilir ve sonra bir Stack<MyStruct>
kullanabilirim, ancak merak ediyorum, başka bir alternatif var mı, aslında Anahtarlar üzerinde bir []-indeksleyici uygulayan bir Sözlük?
Bunu her zaman yapabilirsin:
string[] temp = new string[mydict.count];
mydict.Keys.CopyTo(temp, 0)
int LastCount = mydict[temp[mydict.count - 1]]
Ancak bunu tavsiye etmem. Son eklenen anahtarın dizinin sonunda olacağının garantisi yoktur. MSDN'de]1 Anahtarlar için sıralama belirtilmemiştir ve değişebilir. Çok kısa testimde, ekleme sırasına göre olduğu görülüyor, ancak önerdiğiniz gibi bir yığın (diğer ifadelerinize dayanarak bir yapıya gerek görmüyorum) veya tek değişkenli önbellek gibi uygun bir defter tutma oluşturmanız daha iyi olacaktır. sadece en son anahtarı bilmeniz gerekiyorsa.
Sanırım böyle bir şey yapabilirsiniz, sözdizimi yanlış olabilir, bir süredir C# kullanmadım Son öğeyi almak için
Dictionary<string, int>.KeyCollection keys = mydict.keys;
string lastKey = keys.Last();
veya maksimum değeri almak için Last yerine Max kullanın, hangisinin kodunuza daha uygun olduğunu bilmiyorum.
Bunun işe yarayıp yaramayacağını bilmiyorum çünkü anahtarların eklendikleri sırada saklanmadığından oldukça eminim, ancak KeysCollection'ı bir List
Aklıma gelen diğer tek şey, anahtarları bir arama listesinde saklamak ve sözlüğe eklemeden önce anahtarları listeye eklemek... bu pek hoş değil.