दिलचस्प पोस्ट
मैं Dalvik और एंड्रॉइड toolchain से क्या अनुकूलन की उम्मीद कर सकता हूँ? मैं PHP में कैसे एक UTF-8 सीएसवी आउटपुट कर सकता हूं जो Excel ठीक से पढ़ा जाएगा? कैसे एक Django दृश्य में 2 या अधिक क्वेरीज़ गठबंधन करने के लिए? कर्ल और PHP के साथ सत्र को जीवित रखना पंक्ति में JTable डुप्लिकेट मान जावा – उन संख्याओं के दोहराव के बिना विशिष्ट संख्याओं की रैंडम रेंज उत्पन्न करते हैं – कैसे करें? जावा में वाइल्डकार्ड स्ट्रिंग से मेल खाने वाली फ़ाइलों को कैसे खोजें? पायथन में ईएएफपी सिद्धांत क्या है? पीडीओ पैरामाइसेज किए गए प्रश्न – नामित प्लेसहोल्डर? एक छवि का उपयोग करने से सर्कल div बनाने का आसान तरीका? कैसे एक रूबी सरणी में डुप्लिकेट तत्वों की गणना करने के लिए डीआईवी को बंद करने के लिए कैसे इसे बाहर (लेकिन अंदर नहीं) क्लिक करना मैं कमांड प्रॉम्प्ट में रिक्त स्थान का उपयोग कैसे करूं? AffineTransform साथ छवि घूर्णन कैरिएस रिटर्न, लाइनफीड, और फॉर्म फीड क्या हैं?

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

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

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

जैसा कि दूसरों ने कहा है, "?" इसे 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 जब यह फ़ील्ड गलत पर सेट हो जाती है, तो उदाहरण नल है।

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