2009-05-08 7 views
47

¿C# permite que las tablas se llenen en expresiones de una línea? Estoy pensando en algo equivalente a la continuación de Python:Forma más concisa para inicializar una tabla hash C#

mydict = {"a": 23, "b": 45, "c": 67, "d": 89} 

En otras palabras, ¿existe una alternativa a la configuración de cada par clave-valor en una expresión separada?

Respuesta

73

C# 3 tiene una extensión de idioma llamada inicializadores de colecciones que le permiten inicializar los valores de una colección en una sola declaración.

Aquí hay un ejemplo usando un Dictionary<,>:

using System; 
using System.Collections.Generic; 

class Program 
{ 
    static void Main() 
    { 
     var dict = new Dictionary<string, int> 
     { 
      {"a", 23}, {"b", 45}, {"c", 67}, {"d", 89} 
     }; 
    } 
} 

Esta extensión del lenguaje se apoya en el C# 3 compilador y cualquier tipo que implementa IEnumerable y tiene un método público Add.

Si está interesado yo sugeriría que lea this question I asked here on StackOverflow como a qué C# equipo implementó esta extensión del lenguaje de tal manera curiosa (una vez que lea las excelentes respuestas a la pregunta que usted verá que tiene mucho sentido).

+1

¿Existe una sintaxis similar para definir los diccionarios que tienen múltiples niveles de profundidad? Por ejemplo, 'Dictionary >'? –

+0

Encontré la técnica y la agregaré como una edición a su respuesta, aunque es un poco prolijo, no estoy seguro si le está ahorrando a alguien mucho tiempo. –

Cuestiones relacionadas