Je suis tombé sur ce qui suit et je me demande pourquoi cela n'a pas soulevé d'erreur de syntaxe.
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
}
}
};
Notez que le "," manque entre "MyA" et "OtherAs".
C'est là que la confusion se produit:
- Le code se compile.
- Le dictionnaire final "dict" ne contient que trois éléments: "Id", "Tribes" et "MyA".
- La valeur pour tous sauf "MyA" est correcte,
- "MyA" prend la valeur déclarée pour "OtherAs", tandis que sa valeur d'origine est ignorée.
Pourquoi n'est-ce pas illégal? Est-ce par conception?
<string, string> and modify Points to
"88" `vous obtenez alors une erreur de compilation" Impossible de convertir implicitement le type 'System.Collections.Generic.List <System.Collections.Generic.Dictionary <chaîne, objet >>' en 'chaîne' " ce qui m'a aidé à trouver la réponse!
var test = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 }["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } };
, expliquez-le plus en détail.
OtherAs
soit ajouté comme clé dans ce que serait leMyA
dictionnaire. (Nom = Solo, Points = 88 plus OtherAs = List <Dictionnaire <chaîne, objet >>) sauf qu'il ne l'affecte jamais . Au lieu de cela, il place la liste des pronostics, ne contenant désormais que la seule entrée Points = 1999 dans l'MyA
emplacement remplaçant ce que l'on pourrait penser y appartenir.