dictionary tipos - ¿Es la forma correcta de inicializar un diccionario de C#con los valores que ya están en él?





llenar matriz (5)


Los inicializadores de objetos se introdujeron en C # 3.0, verifique qué versión de marco está apuntando.

Resumen de C # 3.0

Estoy creando un diccionario en un archivo C # con el siguiente código:

private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
        = new Dictionary<string, XlFileFormat>
        {
            {"csv", XlFileFormat.xlCSV},
            {"html", XlFileFormat.xlHtml}
        };

Hay una línea roja debajo de la new con el error:

La característica 'iniciador de recopilación' no se puede usar porque no forma parte de la especificación de lenguaje C # ISO-2

¿Alguien puede explicar lo que está pasando aquí?

EDITAR: está bien, resulta que estaba usando .NET versión 2.




Supongamos que tenemos un diccionario como este

Dictionary<int,string> dict = new Dictionary<int, string>();
dict.Add(1, "Mohan");
dict.Add(2, "Kishor");
dict.Add(3, "Pankaj");
dict.Add(4, "Jeetu");

Podemos inicializarlo como sigue.

Dictionary<int, string> dict = new Dictionary<int, string>  
{
    { 1, "Mohan" },
    { 2, "Kishor" },
    { 3, "Pankaj" },
    { 4, "Jeetu" }
};



Con C # 6.0, puedes crear un diccionario de la siguiente manera:

var dict = new Dictionary<string, int>
{
    ["one"] = 1,
    ["two"] = 2,
    ["three"] = 3
};

Incluso funciona con tipos personalizados.




Puede inicializar un Dictionary (y otras colecciones) en línea. Cada miembro está contenido con llaves:

Dictionary<int, StudentName> 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 } }
};

Ver MSDN para más detalles.




Usando la transformación de Schwartzian de Perl,

py = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

hacer

sort_on = "name"
decorated = [(dict_[sort_on], dict_) for dict_ in py]
decorated.sort()
result = [dict_ for (key, dict_) in decorated]

da

>>> result
[{'age': 10, 'name': 'Bart'}, {'age': 39, 'name': 'Homer'}]

Más sobre Perl Schwartzian transform

En informática, la transformación de Schwartz es un lenguaje de programación Perl que se utiliza para mejorar la eficiencia de la clasificación de una lista de elementos. Este idioma es apropiado para la clasificación basada en comparación cuando el ordenamiento se basa realmente en el ordenamiento de una determinada propiedad (la clave) de los elementos, donde el cálculo de esa propiedad es una operación intensiva que debe realizarse un número mínimo de veces. La transformada de Schwartz es notable en que no utiliza arrays temporales con nombre.







c# dictionary