Почему значение, идущее как "i = 2" вместо 2

user584018 спросил: 31 июля 2018 в 09:55 в: c#

В нижеприведенном коде значение Значение, равное "i = 2" вместо 2.

var dictionary = new Dictionary<string, List<object>>();        for (int i = 1; i <= 2; i++)
        {
            if (dictionary.Keys.Contains("Key1"))
            {
                dictionary["Key1"].Add(new { i });
            }
            else
            {
                dictionary.Add("Key1", new List<object> { i});
            }
        }

2 ответа

Есть решение
Patrick Hofman ответил: 31 июля 2018 в 10:03

С вашим кодом довольно много проблем. Во-первых, это "странный" вывод, который вы видите. Ваш new { i } создал новый анонимный тип со свойством i со значением 2 (i из имени свойства выводится из переменной name. Он равен new { i = i }).

Я бы предложил использовать это:

var dictionary = new Dictionary<string, List<object>>();for (int i = 1; i <= 2; i++)
{
    if (!dictionary.TryGetValue("Key1", out List<object> list))
    {
        list = new List<object>();
        dictionary["Key1"] = list;
    }    list.Add(i);
}
ksdev ответил: 31 июля 2018 в 10:25

Это может вам помочь:

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

dictionary ["Key1"]. Add (new { я});

Вы можете добавить любой тип данных. Например, если вы хотите только int, чем использовать List.