मैं बस एक अजीब त्रुटि में आया:निरर्थक प्रकार और टर्नरी ऑपरेटर: `क्यों है? 10: शून्य 'वर्जित?
private bool GetBoolValue()
{
//Do some logic and return true or false
}
फिर, किसी अन्य विधि में, इस तरह कुछ:
int? x = GetBoolValue() ? 10 : null;
सरल, यदि विधि सही होती है, तो Nullable int
x को 10 असाइन करें। अन्यथा, nullable int को शून्य दें। हालांकि, संकलक शिकायत करता है:
Error 1 Type of conditional expression cannot be determined because there is no implicit conversion between
int
and<null>
.
क्या मैं पागल हो रहा हूँ?
हो सकता है कि इस संकलक के भविष्य के संस्करण में सुधार दिया जाएगा क्योंकि, वहाँ वास्तव में 'int' और '' के बीच एक अंतर्निहित रूपांतरण है और वह है 'पूर्णांक?' –
@ ब्रूनो, यह कहने के लिए अलग कैसे है "वास्तव में [किसी भी प्रकार] और [किसी अन्य प्रकार] और यह 'ऑब्जेक्ट' 'के बीच एक अंतर्निहित रूपांतरण है? क्या आपको लगता है कि वे संकलक के भविष्य के संस्करण में भी "सही" करेंगे? उदाहरण के लिए: ऑब्जेक्ट x = GetBoolValue()? (ऑब्जेक्ट) "foo": (ऑब्जेक्ट) डेटटाइम.अब; – LukeH
कल्पना करें कि कंपाइलर इतना स्मार्ट था कि "ठीक है, हम पहले प्रकार (int) का उपयोग नहीं कर रहे हैं, इसलिए हम इस अभिव्यक्ति के परिणाम के लिए उपयोग कर सकते हैं कि हम एक और प्रकार की तलाश करेंगे।" यदि आप "कंसोल लिखते हैं तो आपको क्या मिलेगा। (राइटिकेट()? 5.6: शून्य) .GetType()। ToString());"? क्या आप फ्लोट करेंगे? या डबल? या वस्तु? या एक उपयोगकर्ता परिभाषित वर्ग फ्लोट से अंतर्निहित रूपांतरण के साथ? संकलक कैसे पता चलेगा कि किस प्रकार का चयन करना है, क्योंकि यह अभिव्यक्ति में कोई नहीं चुन सकता है? – mquander