Natknąłem się na następujące i zastanawiam się, dlaczego nie spowodowało to błędu składniowego.
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
}
}
};
Zauważ, że między „MyA” i „OtherAs” brakuje „,”.
W tym miejscu dochodzi do zamieszania:
- Kod się kompiluje.
- Ostatni słownik „dict” zawiera tylko trzy elementy: „Id”, „Tribes” i „MyA”.
- Wartości dla wszystkich oprócz „MyA” są poprawne,
- „MyA” przyjmuje zadeklarowaną wartość dla „OtherAs”, a jej pierwotna wartość jest ignorowana.
Dlaczego to nie jest nielegalne? Czy to z założenia?
<string, string> and modify Points to
„88”, pojawi się błąd kompilatora „Nie można niejawnie przekonwertować typu„ System.Collections.Generic.List <System.Collections.Generic.Dictionary <ciąg, obiekt >> ”na„ ciąg ” co faktycznie pomogło mi znaleźć odpowiedź!
var test = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 }["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } };
, wyjaśnię to dalej.
OtherAs
zostanie dodany jako klucz do tego, co byłobyMyA
słownika. (Name = Solo, Points = 88 plus OtherAs = List <Dictionary <string, object >>), ale nigdy nie przypisuje go . Zamiast tego umieszcza listę nagrań, teraz zawierającą tylko jeden wpis Punkty = 1999 wMyA
gnieździe, zastępując to, co według nich należy.