Как загрузить значения в словарь с помощью {}



Можно ли загрузить значения в словарь с помощью { } ?



Это не удается



static Dictionary<byte, byte> dict = new Dictionary<byte, byte>() { new KeyValuePair<byte, byte>(1, 1) };


Это не подводит, поэтому я подозреваю, что есть синтаксис для загрузки в { }



static Dictionary<byte, byte> dic1252expand = new Dictionary<byte, byte>() { };


Это пример синтаксиса, который работает



byte[] bytes = new byte[] { 1, 2, 3 }; 
KeyValuePair<byte, byte> kvp = new KeyValuePair<byte, byte>(1, 1);
473   5  

5 ответов:

Это работает:

Dictionary<byte, byte> dict = new Dictionary<byte, byte>() { { 1, 1 }, { 2, 2 } };

Если вы даете кому-то рыбу, у него есть рыба; если вы учите его ловить рыбу, вам не нужно давать ему рыбу. Все опубликованные ответы являются правильными, но ни один из них не говорит вам , Как найти ответ для себя.

Синтаксис инициализатора коллекции в C# - это "синтаксический сахар"; это просто более приятный способ написать скучный код. Когда вы пишете:
C c = new C() { p, q, { r, s }, {t, u, v} };

Это то же самое, как если бы вы написали:

C c;
C temporary = new C();
temporary.Add(p);
temporary.Add(q);
temporary.Add(r, s);
temporary.Add(t, u, v);
c = temporary;

Теперь должно быть ясно, как вы можете выяснить, что нужно поместить в предложение инициализатора: посмотрите на тип и посмотрите, что различные методы Add принимают в качестве аргументов. В вашем случае метод Add словаря принимает ключ и значение, поэтому инициализатор должен быть { { k1, v1 }, { k2, v2 } , ... }

Есть смысл?

Dictionary<string, string> d = new Dictionary<string, string>{{"s", "s"}};
var dict = new Dictionary<int, int>()
    {
        { 1, 1 },
        { 2, 1 },
        { 3, 2 }
    };

Это настроит словарь с тремя парами ключевых значений.

Dictionary<byte, byte> d = new Dictionary<byte, byte>()
                       { 
                          { 1, 2 }, 
                          { 3, 4 } 
                       };

Comments

    Ничего не найдено.