Me topé con lo siguiente y me pregunto por qué no generó un error de sintaxis.
var dict = new Dictionary<string, object>
{
["Id"] = Guid.NewGuid(),
["Tribes"] = new List<int> { 4, 5 },
["MyA"] = new Dictionary<string, object>
{
["Name"] = "Solo",
["Points"] = 88
}
["OtherAs"] = new List<Dictionary<string, object>>
{
new Dictionary<string, object>
{
["Points"] = 1999
}
}
};
Observe que falta "," entre "MyA" y "OtherAs".
Aquí es donde ocurre la confusión:
- El código se compila.
- El diccionario final "dict" contiene solo tres elementos: "Id", "Tribus" y "MyA".
- Los valores para todos excepto "MyA" son correctos,
- "MyA" toma el valor declarado para "OtherAs", mientras que su valor original se ignora.
¿Por qué no es esto ilegal? ¿Es esto por diseño?
<string, string> and modify Points to
"88" `, aparece un error del compilador" No se puede convertir implícitamente el tipo 'System.Collections.Generic.List <System.Collections.Generic.Dictionary <string, object >>' a 'string' " que realmente me ayudó a encontrar la respuesta!
var test = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 }["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } };
te lo explicaré más a fondo.
OtherAs
se agregó como una clave en lo que sería elMyA
diccionario. (Nombre = Solo, Puntos = 88 más Otros Como = Lista <Diccionario <cadena, objeto >>) excepto que nunca lo asigna . En su lugar, coloca la lista de dictados, que ahora solo contiene la única entrada Puntos = 1999 en laMyA
ranura que anula lo que uno pensaría que pertenece allí.