Ошибка преобразования списка & lt; KeyValuePair & lt;, & gt; & gt; & gt; & gt; to IEnumerable & lt; object & gt; [Дубликат]

Имейте в виду, что независимо от сценария причина всегда одинакова в .NET:

Вы пытаетесь использовать ссылочную переменную, значение которой Nothing / null. Если для ссылочной переменной значение Nothing / null, это означает, что на самом деле оно не содержит ссылку на экземпляр любого объекта, который существует в куче.

Вы либо никогда не присваивали какую-либо переменную, никогда не создавали экземпляр значения, присвоенного переменной, или вы вручную устанавливали переменную, равную Nothing / null, или вы вызывали функцию, которая установите для этой переменной значение Nothing / null.

9
задан Tom van der Woerdt 20 December 2011 в 15:49
поделиться

4 ответа

Поскольку это структура, а не класс: http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx

11
ответ дан mathieu 31 August 2018 в 16:11
поделиться

A KeyValuePair является структурой и не наследуется от объекта класса.

2
ответ дан Fischermaen 31 August 2018 в 16:11
поделиться

Это потому, что KeyValuePair<K,V> не является классом, является структурой. Преобразование списка в IEnumerable<object> означало бы, что вам нужно взять каждую пару ключа и поставить его:

IEnumerable<object> test = new List<KeyValuePair<string, int>>().Select(k => (object)k).ToList();

Поскольку вам нужно преобразовать каждый элемент в список, вы не можете сделать это просто листинг самого списка.

17
ответ дан Guffa 31 August 2018 в 16:11
поделиться

Прежде всего, словарь уже является сборником KeyValuePairs, поэтому второй пример отличает весь Словарь к объекту, а не к KeyValuePairs.

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

IEnumerable<object> test = (IEnumerable<object>)new List<KeyValuePair<string, int>>().Cast<object>();
3
ответ дан Strillo 31 August 2018 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: