दिलचस्प पोस्ट
एजाक्स द्वारा अन्य रूप को प्रस्तुत करना, इसके दृश्य स्थिति को खो जाने के कारण होता है, मैं इसे वापस कैसे जोड़ूं? एक सूची में पोस्ट करना <मॉडल प्रकार> MVC3 हिम तेंदुए पर .profile और .bash_profile के बीच का अंतर जिनजा के साथ जेन्डर को प्रस्तुत करना स्ट्रिंग की बजाय अमान्य संख्या उत्पन्न करता है कंसल्टेंट पर कोई कंस नहीं है, जिसमें कोई भाषा मानक नहीं है? Magento में एक उत्पाद की छवि कैसे प्राप्त करें? मैं std :: map के मेमोरी उपयोग का अनुमान कैसे कर सकता हूं? जेनमेन इटैम का नाम ऐक्शन लास्टनर को देना कोणीय CLI एसएएसएस विकल्प अजगर में एक पूर्णांक में स्ट्रिंग सूची को कैसे परिवर्तित करें किसी दी गई तस्वीर पर लंबे / अक्षांश से पिक्सेल x / y को परिवर्तित करें लंबे डिवा को तोड़ने से कैसे लंबे शब्दों को रोकने के लिए? कैसे और क्यों मैं एक सी # बिल्ड मशीन स्थापित करते हैं? अजाक्स jquery सफलता के दायरे है … फू एक ऑपरेटर या वाक्यविन्यास?

? (शून्य) ऑपरेटर सी #

मूल्य प्रकार डेटाटाइप पर नल योग्य ऑपरेटर को लागू करने से क्या बदला जाता है जो कि अब यह अशक्त को स्टोर कर सकता है।

वेब के समाधान से एकत्रित समाधान "? (शून्य) ऑपरेटर सी #"

जैसा कि दूसरों ने कहा है, "?" इसे Nullable<T> बदलने के लिए सिर्फ लघुकथा है यह बूलियन ध्वज के साथ एक और मूल्य प्रकार है, यह कहने के लिए कि वास्तव में कोई उपयोगी मान है या नहीं, या यह प्रकार के लिए शून्य मान है या नहीं। दूसरे शब्दों में, Nullable<T> कुछ इस तरह दिखता है:

 public struct Nullable<T> { private readonly bool hasValue; public bool HasValue { get { return hasValue; } } private readonly T value; public T value { get { if (!hasValue) { throw new InvalidOperationException(); } return value; } } public Nullable(T value) { this.value = value; this.hasValue = true; } // Calling new Nullable<int>() or whatever will use the // implicit initialization which leaves value as default(T) // and hasValue as false. } 

स्पष्ट रूप से वास्तविक कोड में अधिक तरीके हैं (जैसे कि GetValueOrDefault() ) और रूपांतरण ऑपरेटर आदि। सी # संकलक को उठाए गए ऑपरेटर्स कहते हैं जो T लिए मूल ऑपरेटरों को प्रभावी रूप से प्रॉक्सी करते हैं।

एक टूटे हुए रिकॉर्ड की तरह बजने के जोखिम पर, यह अभी भी एक मूल्य प्रकार है। इसमें मुक्केबाजी शामिल नहीं है … और जब आप लिखते हैं:

 int? x = null; 

यह एक अशक्त संदर्भ नहीं है – यह शून्य Nullable<int> अर्थ है, अर्थात् जहां एक है hasValue false

जब एक रिक्त प्रकार बॉक्सिंग होता है, तो सीएलआर में एक विशेषता होती है जिससे मूल्य एक या किसी रिक्त संदर्भ में बॉक्सिंग हो जाता है, या एक सादे बॉक्सिंग टी। इसलिए यदि आपके पास ऐसा कोड है:

 int? x = 5; int y = 5; object o1 = x; object o2 = y; 

o1 और o2 द्वारा निर्दिष्ट बॉक्सिंग मान अविवेच्य हैं। आप यह नहीं बता सकते कि मुक्केबाजी का नल एक प्रकार का बकाया प्रकार है।

क्या ? वाक्यविन्यास Nullable<T> struct करने के लिए वाक्यविन्यास चीनी है

संक्षेप में, जब आप int? myNullableInt लिखते हैं int? myNullableInt int? myNullableInt , कंपाइलर इसे Nullable<int> myNullableInt को Nullable<int> myNullableInt

MSDN से (नीचे स्क्रॉल करें "नल योग्य प्रकार अवलोकन"):

वाक्यविन्यास टी? Nullable के लिए लघुकथा है, जहां टी एक मूल्य प्रकार है दो रूप विनिमेय हैं

मूल्य के प्रकार पर कुछ भी नहीं बदला जाता है, यह बस एक System.Nullable<T> में लपेटता है। System.Nullable<T> struct http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

यह एक नल योग्य प्रकार के लिए किस प्रकार उपयोग करता है

यदि आपके पास कोई int था, और इसे एक int बनाने का निर्णय लिया ?:

 int myInt; 

और आप इसे बनाते हैं:

 int? myInt; 

यह अभी है:

 Nullable<int> myInt; 

वास्तव में।

मूल शब्दों में, एक रिक्त प्रकार सामान्य प्रकार का एक बॉक्स्ड संस्करण होता है जिस पर उसमें एक अतिरिक्त बूलियन फ़ील्ड है जिसका नाम है hasValue जब यह फ़ील्ड गलत पर सेट हो जाती है, तो उदाहरण नल है।

सीएलआर के कार्यान्वयन पर थोड़ी अधिक जानकारी के लिए इस जवाब की जांच करें और उन्होंने इसे क्यों चुना है: मुक्केबाजी / अनब्लॉकिंग नल योग्य प्रकार – यह कार्यान्वयन क्यों है?