Как получить ключ от TDictionary? - PullRequest
7 голосов
/ 21 сентября 2010

У меня есть TDictionary<TKeyClass, TValueClass>.

Я хочу сделать что-то вроде

for i := 0 to MyDictionary.Count -1 do
  ShowMessage(MyDictionary.Keys[i].AStringProperty)

Я больше не могу получить доступ к ключам, я могу просто использовать их, если точно знаю их.

Единственная альтернатива создать TDictionary<TValueClass, TKeyValue>? Так я могу зациклить ключи?

Я нашел способ создания TList<TKeyClass>, но мне это не нравится.

1 Ответ

14 голосов
/ 21 сентября 2010

Используйте перечислитель.

for Key in MyDictionary.Keys do
  ShowMessage(Key.AStringProperty);

Поскольку TDictionary является хеш-таблицей, вы не можете получить к ней доступ с помощью целочисленной индексации, например, массива или TList.Но перечислитель работает просто отлично.

...