इन दो पंक्तियों के बीच कोई अंतर नहीं है, क्योंकि दूसरी पंक्ति में कंपाइलर समझता है कि यह int प्रकार की एक सरणी है।संकलक var [] ऑब्जेक्ट [] में C# में क्यों परिवर्तित नहीं करता है?
var x = new int[] { 1, 2, 3 }; //Fine, x is int[]
var x = new [] { 1, 2, 3 }; //Fine, x is int[]
लेकिन मैं इसे विभिन्न प्रकारों से क्यों नहीं कर सकता? संकलक मेरे चर को ऑब्जेक्ट टाइप करने के लिए क्यों परिवर्तित नहीं करता है?
var x = new object[] { 1, "df", 5 }; //Fine, x is object[]
var x = new [] { 1, "df", 5 }; //Error! "No best type found for implicity-typed-array"
संपादित करें:
अपने सभी सवालों के जवाब के लिए धन्यवाद। लेकिन मुझे अभी भी आश्चर्य है कि सभी अभिव्यक्तियों को बनाने के लिए पेशेवर और विपक्ष क्या हैं जो संकलक object
टाइप नहीं कर सकते हैं? (क्योंकि मैं var
नोटेशन का उपयोग करता हूं जिसका अर्थ है कि यह किसी भी प्रकार का नहीं हो सकता है। मैं इस तरह समझता हूं।) संकलक विरासत के पेड़ पर जाकर सरणी सदस्यों के निकटतम प्रकार क्यों नहीं ढूंढता है?
क्या आपने सी # spec पढ़ा है? – BoltClock
हां, लेकिन ज्यादातर सवाल यह है कि "इस तरह से इसे क्यों लागू नहीं किया जाता है?" –
जॉय के जवाब पर Damien_The_Unbeliever की टिप्पणी यह सब सचमुच कहती है। यह कंपाइलर के लिए बहुत अधिक काम है, न कि उल्लंघनकारी 'ऑब्जेक्ट []' का उल्लेख न करें, नतीजतन मेरे लिए बहुत प्रतिद्वंद्वी है। – BoltClock