¿Cómo insertar valores en el Diccionario C # en la creación de instancias?

Respuestas:

199

Hay una página completa sobre cómo hacer eso aquí:

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

Ejemplo:

En el siguiente ejemplo de código, a Dictionary<TKey, TValue>se inicializa con instancias de 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
fuente
3
Sin embargo, esto solo funciona en el compilador .NET 3.5 ... solo tenlo en cuenta.
Adrian Godong
@ kd7iwp: no hay problema, parte de la función de este sitio es que los términos de búsqueda alternativos se puedan enrutar a algo útil.
Daniel Earwicker
Sí, eso es casi un hecho con Microsoft. Han estado bastante comprometidos con la compatibilidad con versiones anteriores a lo largo de los años.
PRMan
46
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
   { 0, "string" }, 
   { 1, "string2" }, 
   { 2, "string3" } };
Timothy Carter
fuente
12

Ya casi estabas allí:

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

También puede usar expresiones Lambda para insertar cualquier par de valores clave de cualquier otro objeto IEnumerable. La clave y el valor pueden ser del tipo que desee.

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

Me parece mucho más simple ya que usa los objetos IEnumerable en todas partes en .NET

¡¡¡Espero que ayude!!!

Tad

matendie
fuente
7

Puede crear una instancia de un diccionario y agregar elementos como este:

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

Solo para que sepa que a partir de C # 6 ahora puede inicializarlo de la siguiente manera

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}
};

Mucho más limpio :)

russelrillema
fuente
-1

Espero que funcione perfectamente.

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


fuente
Hola, bienvenido a SO! La persona que originalmente hizo esta pregunta dijo específicamente que no quiere hacer el .Add(int, "string")método de agregar valores a un diccionario. Lo siento, pero esto no responde la pregunta.
Kezz101
-2

Esto generalmente no se recomienda, pero en tiempos de crisis inciertas puede 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
fuente