int n == 0;
if (n == null)
{
Console.WriteLine("......");
}
यह सच है कि अभिव्यक्ति (n == 0
) का परिणाम हमेशा झूठ है क्योंकि प्रकार int
का एक मान प्रकार int?
टाइप क्यों "int" कभी 'शून्य' के बराबर नहीं है?
int n == 0;
if (n == null)
{
Console.WriteLine("......");
}
यह सच है कि अभिव्यक्ति (n == 0
) का परिणाम हमेशा झूठ है क्योंकि प्रकार int
का एक मान प्रकार int?
टाइप क्यों "int" कभी 'शून्य' के बराबर नहीं है?
की null
के लिए कभी नहीं के बराबर होती है जब आप अपने पूर्णांक चर शून्य मान अनुमति देना चाहते हैं, के लिए यह घोषणा है
int? n = 0;
नोट ?
पूर्णांक के बाद, जिसका अर्थ है कि प्रकार मान null
हो सकता है: एक nullable type हो। NETable प्रकार .NET Framework के v2.0 के साथ पेश किए गए थे।
वैकल्पिक रूप से (हालांकि मुझे यह पसंद है शॉर्टंड '? 'पोस्ट-फिक्स बेहतर) [' Nullable
@ ब्रैड सत्य- मैं होगा अगर मैंने '' 'shorthand का उपयोग नहीं किया तो मेरी ज़िंदगी बर्बाद कर रही है। – RedFilter
@ ब्रैड: 'n.GetValueOrDefault()' के साथ-साथ '??' – thecoop
क्योंकि int
एक संदर्भ प्रकार के बजाय एक मूल्य प्रकार है। सी # भाषा विशिष्टता शून्य होने के लिए int
की अनुमति नहीं देती है। इस कथन को संकलित करने का प्रयास करें:
int x = null ;
और देखें कि आपको क्या मिलता है।
आपको संकलक चेतावनी मिलती है क्योंकि यह एक व्यर्थ परीक्षण है और संकलक इसे जानता है।
.NET (जैसे int, double, और bool) में "वैल्यू टाइप" परिभाषा के अनुसार, शून्य हो सकता है - उनके पास हमेशा एक वास्तविक मान असाइन किया जाता है। मूल्य प्रकार बनाम संदर्भ प्रकारों के लिए एक अच्छा परिचय के लिए, http://www.albahari.com/valuevsreftypes.aspx
सी # में एक अनियमित चर का उपयोग करने की अनुमति नहीं है।
तो
एक संकलन त्रुटि मेंint i;
Console.Writeline(i);
परिणाम।
int anInt = new int();
इस पूर्णांक के लिए Default value जो 0. मामलों में आप किसी सामान्य int
एक के साथ पूर्णांक नल कर सकते हैं करना चाहते हैं में है में परिणाम होगा:
आप के साथ नए तरह के रूप में पूर्णांक को प्रारंभ कर सकते हैं वाक्यविन्यास
int? nullableInt = null;
डाउनवोट क्यों? यह स्पष्ट करना महत्वपूर्ण है कि प्रारंभिकता के मामले में प्रारंभिकरण कैसे कार्य करता है। कोई अन्य जवाब यह नहीं किया। विशेष रूप से सवाल की अस्पष्टता पर विचार करना। हमें यह सुनिश्चित करने की ज़रूरत है कि सभी जमीन ओपी और भविष्य के लोगों के लिए कवर की गई है जिनके पास यह सामान्य प्रश्न है। –
मैंने डाउनवॉटेड किया क्योंकि प्रारंभिकरण भी एक मुद्दा नहीं था (हालांकि, विचित्र रूप से, ओपी का प्रारंभिक संकलन नहीं होगा)। उस समय, यही वह है जो मैंने आपके उत्तर का मुद्दा माना, और मैंने इसे विषय-वस्तु के बारे में सोचा। हालांकि, मेरा वोट लॉक होने लगते हैं। –
@ जेओएल बी फंता - मैंने देखा कि ओपी प्रारंभिक संकलन नहीं करेगा। यही कारण है कि मैंने सी # लैंग के संबंध में प्रारंभिकरण और नल को समझाते हुए इस उत्तर को पोस्ट करने के बारे में सोचा। –
एनयूएलएल का उपयोग सामान्य रूप से पॉइंटर्स और संदर्भों पर लागू होता है। एक पूर्णांक को आवंटित मान 0 शून्य नहीं है। हालांकि अगर आप पूर्णांक को पॉइंटर असाइन कर सकते हैं और इसे पूर्ण रूप से असाइन कर सकते हैं, तो कथन वैध है।
सारांश में =>
/*Use the keyword 'null' while assigning it to pointers and references. Use 0 for integers.*/
बहुत सीधे शब्दों में, किसी पूर्णांक एक बहुत ही बुनियादी मद है। यह छोटा और सरल है ताकि इसे जल्दी से संभाला जा सके। इसे ऑब्जेक्ट/पॉइंटर मॉडल के साथ सीधे मूल्य के रूप में संभाला जाता है। इस प्रकार, इसके लिए कोई कानूनी "पूर्ण" मूल्य नहीं है। इसमें बस इसमें शामिल है। 0 का मतलब है 0. एक सूचक के विपरीत, जहां यह 0 होना कुल होगा। 0 को संग्रहीत करने वाली ऑब्जेक्ट में अभी भी एक शून्य-शून्य सूचक होगा।
यदि आपको मौका मिलता है, तो कुछ पुराने स्कूल सी या असेंबली काम करने के लिए समय निकालें, यह बहुत स्पष्ट हो जाएगा।
नहीं, क्योंकि int
एक मूल्य प्रकार है।int
Value
Date
, double
आदि जैसे प्रकार है, इसलिए null
मान असाइन करने का कोई तरीका नहीं है।
क्योंकि int एक मान प्रकार है ...? – BoltClock
क्यों सी # के बारे में एक प्रश्न डुप्लिकेट किया जा सकता है यदि मौजूदा उत्तर जावा के लिए है ?! –
@ मटियास: मुझे लगता है कि यह समझ में आता है क्योंकि .NET और Java में कई समानताएं हैं, और इस मामले में यह एक ही अवधारणा है जिसमें थोड़ा अलग शब्दावली (आदिम बनाम मूल्य प्रकार) है। और जब आप बंद करने के लिए वोट देते हैं, तो आप 5 में से 1 कारण चुनते हैं, और सभी वोटों का एक ही कारण नहीं होना चाहिए। –