Como inserir valores no dicionário C # na instanciação?

Respostas:

199

Há uma página inteira sobre como fazer isso aqui:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

Exemplo:

No exemplo de código a seguir, a Dictionary<TKey, TValue>é inicializado com instâncias do tipo StudentName:

var students = new Dictionary<int, StudentName>()
{
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}},
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}},
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}}
};
Daniel Earwicker
fonte
3
Porém, isso funciona apenas no compilador .NET 3.5 ... apenas tenha isso em mente.
Adrian Godong
@ kd7iwp - não há problema, parte da função deste site é para que termos de pesquisa alternativos possam ser roteados para algo útil.
21119 Daniel Earwicker
Sim, isso é praticamente um dado com a Microsoft. Eles têm se comprometido com a compatibilidade com versões anteriores ao longo dos anos.
PRMan 19/09/14
46
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
   { 0, "string" }, 
   { 1, "string2" }, 
   { 2, "string3" } };
Timothy Carter
fonte
12

Você estava quase lá:

var dict = new Dictionary<int, string>()
{ {0, "string"}, {1,"string2"},{2,"string3"}};
Henk Holterman
fonte
10

Você também pode usar expressões Lambda para inserir pares de valores-chave de qualquer outro objeto IEnumerable. Chave e valor podem ser do tipo que você deseja.

Dictionary<int, string> newDictionary = 
                 SomeList.ToDictionary(k => k.ID, v => v.Name);

Acho isso muito mais simples, pois você usa os objetos IEnumerable em qualquer lugar do .NET

Espero que ajude!!!

Tad.

matendie
fonte
7

Você pode instanciar um dicionário e adicionar itens a ele assim:

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };
Joseph
fonte
7

Só para você saber a partir do C # 6, agora você pode inicializá-lo da seguinte maneira

var students = new Dictionary<int, StudentName>()
{
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211},
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317},
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198}
};

Muito mais limpo :)

russelrillema
fonte
-1

Espero que funcione perfeitamente.

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);


fonte
Olá, bem-vindo ao SO! A pessoa que originalmente fez essa pergunta disse especificamente que não deseja usar o .Add(int, "string")método de adicionar valores a um dicionário. Desculpe, mas isso não responde à pergunta.
Kezz101
-2

Isso geralmente não é recomendado, mas em tempos de crises incertas você pode usar

Dictionary<string, object> jsonMock = new Dictionary<string, object>() { { "object a", objA }, { "object b", objB } };

// example of unserializing
ClassForObjectA anotherObjA = null;
if(jsonMock.Contains("object a")) {
    anotherObjA = (ClassForObjA)jsonMock["object a"];
}
Jacksonkr
fonte