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