निम्न कोड को संकलित करता है, लेकिन एक NullReferenceException
के साथ विफल:सी # शब्दकोश प्रारंभकर्ता संकलन विसंगति
class Test
{
public Dictionary<string, string> Dictionary { get; set; }
}
static void Main(string[] args)
{
var x = new Test
{
Dictionary = // fails
{
{ "key", "value" }, { "key2", "value2" }
}
};
}
आप लाइन निम्नलिखित के साथ चिह्नित 'विफल रहता है' की जगह ले रहे हैं, तो यह काम करता है (उम्मीद के रूप में):
Dictionary = new Dictionary<string, string>
क्या असफल वाक्यविन्यास का कोई उद्देश्य है - क्या इसे किसी अन्य मामले में सफलतापूर्वक उपयोग किया जा सकता है? या यह संकलक में एक निरीक्षण है?
तो इसका उपयोग कन्स्ट्रक्टर द्वारा बनाए गए शब्दकोश में आइटम जोड़ने के लिए किया जाता है - मुझे यह महसूस करना चाहिए था। लेकिन यह बराबर ऑपरेटर का एक अजीब उपयोग है, क्योंकि प्रभाव जो भी पहले से ही शब्दकोश में जोड़ना है (कन्स्ट्रक्टर ने पहले आइटम जोड़े होंगे)। –
सॉर्ट करें, हां ... लेकिन साथ ही इसका उपयोग संग्रह में प्रारंभिक मान सेट करने के लिए किया जाता है, इसलिए यह इस तरह से फिट बैठता है। –
दाएं। गायब 'नया' लाल झंडा होना चाहिए .. लेकिन इस वाक्यविन्यास का कभी भी उपयोग नहीं किया, मैंने बराबर ऑपरेटर को भी सचमुच लिया। –