আমি নিম্নলিখিতগুলিতে হোঁচট খেয়েছি এবং আমি ভাবছি কেন এটি একটি সিনট্যাক্স ত্রুটি বাড়িয়ে তোলে না।
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
}
}
};
লক্ষ্য করুন যে "মাইএ" এবং "অন্যান্যএএস" এর মধ্যে "," অনুপস্থিত।
এখানেই বিভ্রান্তি ঘটে:
- কোডটি সংকলন করে।
- চূড়ান্ত অভিধান "ডিক" এ কেবলমাত্র তিনটি উপাদান রয়েছে: "আইডি", "উপজাতি" এবং "মাইএ"।
- "মাইএ" ব্যতীত সকলের জন্য মানটি সঠিক,
- "মাইএ" "অন্যান্যএএস" এর জন্য ঘোষিত মান গ্রহণ করে, যখন এর আসল মানটিকে অগ্রাহ্য করা হয়।
কেন এটি অবৈধ নয়? এটা কি ডিজাইন করে?
<string, string> and modify Points to অভিধানটি "88" তে পরিবর্তন করেন তবে আপনি একটি সংকলক ত্রুটি পেয়ে যান "স্পষ্টতই 'সিস্টেম.কলেশনস.জেনারিক.লাইস্ট <সিস্টেম.কলেশনস.জেনেরিক.ডায়ার্নি <স্ট্রিং, অবজেক্ট >>' থেকে 'স্ট্রিং'" রুপান্তর করতে পারবেন না " যা আসলে আমাকে উত্তরটি খুঁজে পেতে সহায়তা করেছিল!
var test = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 }["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } };এটি আরও ব্যাখ্যা করবেন।
OtherAsকি মধ্যে একটি কী হিসাবে যোগ পরার হবেMyAঅভিধান। (নাম = একক, পয়েন্ট = 88 প্লাস অন্যান্যএএস = তালিকা <ডিকশনারী <স্ট্রিং, অবজেক্ট >>) এটিকে এর পরে কখনও বরাদ্দ করে না । পরিবর্তে এটি ডিক্টের তালিকা রাখে, এখনMyAস্লটে কেবলমাত্র একক পয়েন্ট = 1999 এন্ট্রি রয়েছে যাতে কেউ কী ভাবেন সেটিকে ওভাররাইড করে।