Словарь с одним элементом - PullRequest
2 голосов
/ 03 мая 2010

В случае, если Dictionary<object, object> myDictionary содержит один элемент, каков наилучший способ получения объекта значения (если мне не важен ключ)?

if (myDictionary.Count == 1)
{
    // Doesn't work
    object obj = myDictionary.Values[0];
}

Спасибо

Ответы [ 5 ]

8 голосов
/ 03 мая 2010

В зависимости от того, хотите ли вы потерпеть неудачу, если есть несколько объектов или нет, вы можете использовать либо

myDictionary.Value.Single();//Will fail if there's more than one

или

myDictionary.Value.First();//Will just return the first regardless of the count
3 голосов
/ 03 мая 2010

Я бы никогда не кодировал предположение, что будет только один. Если вы знаете, что всегда будет один, зачем использовать словарь?

3 голосов
/ 03 мая 2010
object obj = myDictionary.Values.Single();
1 голос
/ 03 мая 2010

Вы не можете получить значение напрямую или по индексу, вы должны либо знать ключ:

object obj = yourDictionary[theKeyThatYouHappenToKnow];

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

var en = yourDictionary.GetEnumerator();
en.MoveNext();
object obj = en.Current.Value;
en.Dispose();

Если вы используете framework 3.5, вы также можете использовать какой-либо метод расширения, например Single или First, чтобы использовать для вас перечислитель.

0 голосов
/ 03 мая 2010

Я думаю, вы можете использовать итератор.

myDictionary.GetEnumerator().Current

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...