2014-10-15 2 views
0

Есть ли способ получить местоположение ключа в словаре?Перемещение по клавишам словаря

, например, если мои ключи 23, 44, 56, 66 и я хочу ГЭТ они ключ на месте 0 было бы вернуть мне 23. Или ключ на месте 2 вернутся 56.

Are словарные ключи как это?

+0

Что именно вы имеете в виду? Итак, вы хотите найти словарь и узнать, где значение находится внутри словаря? –

+0

Я пытаюсь выбрать случайный ключ из словаря. Только ключ, а не значение –

+0

Почему вы хотите это сделать? – Enigmativity

ответ

0

От MSDN:

Для целей перечисления, каждый элемент в словаре трактуются как структуру KeyValuePair, представляющих значение и его ключа. Порядок, в котором возвращаются элементы, не определен.

Таким образом, индексы не будут согласованы, если когда-либо вы его получите.

Я предлагаю вам использовать List<T>, используя что-то вроде KeyValuePair<TKey,TValue> или класса, если можете.

2

Так что словаря слова можно перебирать, потому что это тип ICollection.

Если вы действительно хотите, чтобы просто найти случайный ключ, который вы могли бы просто создать случайное число и использовать

var randomNumber = 5; (or however you want to get a random number) 
var randomKey = yourDictionary.ElementAt(randomNumber).Key; 

Так что это будет получить ключ в шестой позиции словаря, и если вы хотите, вы могли бы также получите значение, просто сказав .Value;

+0

Хммм, я пробовал ElementAt, но по некоторым причинам он не работает в Unity3d. Это может быть метод расширения, недоступный для меня в Unity. Но да, это именно то, что я ищу, за исключением того, что он не работает. –

+0

Другое, поместив все ключи в массив и выбрав индекс этого массива, я не уверен, может ли быть более простой способ (в Unity). –

+0

Обратите внимание, что словарь является неупорядоченной коллекцией, поэтому в любом словаре нет шестой позиции! ICollection не указывает порядок. – Tyress

Смежные вопросы