una que propiedades programacion objeto mostrar metodos manejo listas lista inicializar inicializador elementos declarar clase agregar c# dictionary collections c#-6.0 collection-initializer

que - mostrar elementos de una lista c#



¿Qué ventajas añaden los inicializadores de diccionario a los inicializadores de colecciones? (2)

Nuevo es crear un diccionario de esta manera

Dictionary<int, string> myDict = new Dictionary<int, string>() { [1] = "Pankaj", [2] = "Pankaj", [3] = "Pankaj" };

con el estilo de <index> = <value>

Obsoleta: sintaxis de miembro indexado de cadena (como se indica en los comentarios)

Dictionary<int, string> myDict = new Dictionary<int, string>() { $1 = "Pankaj", $2 = "Pankaj", $3 = "Pankaj" };

Tomado de AC # 6.0 Vista previa del lenguaje

Para comprender el operador $, eche un vistazo a la llamada a la función AreEqual. Observe la invocación de miembro de Dictionary de "$ Boolean" en la variable builtInDataTypes, aunque no haya ningún miembro "Boolean" en Dictionary. Tal miembro explícito no es necesario porque el operador $ invoca al miembro indexado en el diccionario, el equivalente a llamar a buildInDataTypes ["Boolean"].

En un pasado reciente se ha hablado mucho sobre lo nuevo en C # 6.0
Una de las características más comentadas es utilizar inicializadores de Dictionary en C # 6.0
Pero espere, hemos estado utilizando los inicializadores de colecciones para inicializar las colecciones y también podemos inicializar un Dictionary también en .NET 4.0 y .NET 4.5 (No sé sobre la versión anterior), como

Dictionary<int, string> myDict = new Dictionary<int, string>() { { 1,"Pankaj"}, { 2,"Pankaj"}, { 3,"Pankaj"} };

Entonces, ¿qué hay de nuevo en C # 6.0, de qué diccionario inicializador están hablando en C # 6.0


Si bien puedes inicializar un diccionario con inicializadores de colecciones, es bastante engorroso. Especialmente para algo que se supone que es azúcar sintáctico.

Los inicializadores de diccionario son mucho más limpios:

var myDict = new Dictionary<int, string> { [1] = "Pankaj", [2] = "Pankaj", [3] = "Pankaj" };

Más importante aún, estos inicializadores no son solo para diccionarios, sino que se pueden usar para cualquier objeto que soporte un indexador , por ejemplo, List<T> :

var array = new[] { 1, 2, 3 }; var list = new List<int>(array) { [1] = 5 }; foreach (var item in list) { Console.WriteLine(item); }

Salida:

1 5 3