Aşağıdakileri tökezledim ve neden bir sözdizimi hatası oluşturmadığını merak ediyorum.
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
}
}
};
"MyA" ve "OtherAs" arasında "," eksik olduğuna dikkat edin.
Karışıklık burada:
- Kod derlenir.
- Son sözlük "dict" sadece üç öğe içerir: "Id", "Tribes" ve "MyA".
- "MyA" dışındaki herkes için değer doğrudur,
- "MyA", "OtherAs" için bildirilen değeri alırken orijinal değeri yok sayılır.
Bu neden yasadışı değil? Tasarım gereği bu mu?
<string, string> and modify Points to
"88" olarak değiştirirseniz, derleyici hatası alırsınız "örtülü olarak 'System.Collections.Generic.List <System.Collections.Generic.Dictionary <string, object >>' türünü 'string' olarak dönüştüremezsiniz" bu aslında cevabı bulmama yardım etti!
var test = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 }["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } };
daha fazla açıklayacağız.
OtherAs
içine ne bir anahtar olarak ekleniyor olacağınıMyA
sözlük. (Ad = Yalnız, Puanlar = 88 artı DiğerAs = Liste <Sözlük <dize, nesne >>) dışında hiçbir zaman atamaz . Bunun yerine, şu anda sadece tek Puan = 1999 girişini içeren bir dikte listesini yerleştiriyor, oMyA
kişinin ait olduğunu düşündüğünü geçersiz kılıyor.