मुझे पता है कि शून्य प्रकार के मानने के लिए संभव है जो मान प्रकार को लपेटता है और शून्य को स्टोर करने की क्षमता देता है। लेकिन क्या कोई तकनीकी कारण मूल्य प्रकार को शून्य होने की अनुमति नहीं देता है या कारण केवल वैचारिक है?क्यों मान प्रकार शून्य नहीं हो सकते हैं
उत्तर
एक संदर्भ प्रकार किसी ऑब्जेक्ट उदाहरण के लिए एक संदर्भ (एक सूचक की तरह) के रूप में संग्रहीत किया जाता है।
null
का अर्थ एक संदर्भ है जो किसी ऑब्जेक्ट के उदाहरण को इंगित नहीं कर रहा है।
वैल्यू प्रकार किसी भी संदर्भ के बिना मूल्यों के रूप में संग्रहीत किए जाते हैं।
इसलिए, null
मान प्रकार — मान प्रकार परिभाषा द्वारा मूल्य मानने के लिए यह समझ में नहीं आता है।
Nullable<T>
HasValue
ध्वज के साथ एक मान प्रकार है जो false
हो सकता है यह इंगित करने के लिए कि कोई मूल्य नहीं है। यह अभी भी एक मान है (जब HasValue
false
है, Value
default(T)
है), लेकिन HasValue
ध्वज आपको मूल्य को अनदेखा करने के लिए कहता है।
इसका null
के साथ कुछ लेना देना नहीं है, सिवाय इसके कि सीएलआर स्वचालित रूप से null
Nullable<T>
पर HasValue
false
पर बॉक्स किए गए मानों को अनबॉक्स करता है।
एक मूल्य प्रकार 'Int32' भंडारण के तीस-बिट बिट्स का उपयोग करके संग्रहीत किया जाता है। ठीक 4,294,967,296 मान हैं जिन्हें 32 बिट्स द्वारा दर्शाया जा सकता है, और इंट 32 में 4,294,967,296 अलग-अलग मान हो सकते हैं। यदि -2,147,483,648 मान्य इंट 32 मान नहीं थे, तो इसका उपयोग "शून्य" का प्रतिनिधित्व करने के लिए करना संभव हो सकता है, लेकिन तथ्य यह है कि इसका बाइनरी प्रतिनिधित्व सभी शून्यों को जटिल नहीं करेगा। इसके विपरीत, किसी संदर्भ प्रकार में संभावित बिट संयोजनों की संख्या संभावित मान्य संदर्भों की संख्या से कहीं अधिक है, इसलिए "शून्य" का प्रतिनिधित्व करने के लिए थोड़ा संयोजन आरक्षित करने में कोई कठिनाई नहीं है।
आप जो भी समझा रहे हैं उसके लिए कोई संदर्भ (आलेख)? मैं अभी भी आपके द्वारा रखे गए विचार के बारे में स्पष्ट नहीं हूं। – Marshal
हम चर का उपयोग कर चरणीय बना सकते हैं? ऑपरेटर। उदाहरण के लिए, int? एक्स = शून्य; – Shekhar
@ शेखर: वह उसे महसूस करता है। इसका 'शून्य' से कोई लेना देना नहीं है। स्पष्टीकरण के लिए – SLaks
धन्यवाद। – Shekhar