जवाबों:
नहीं, एक अशक्त एक संरचना है। क्या हो रहा है कि अशक्त संरचना के दो मूल्य हैं:
int
लिए int?
, के DateTime
लिए DateTime?
, आदि)।HasValue
संपत्ति है।)जब आप डेटा प्रकार का मान सेट करते हैं, तो संरचना HasValue
सही में बदल जाती है।
से Nullable प्रकार (सी # प्रोग्रामिंग गाइड) :
अशक्त प्रकार System.Nullable संरचना के उदाहरण हैं।
तथा
अशक्त प्रकार मूल्य-प्रकार के चर का प्रतिनिधित्व करते हैं जिन्हें नल के मूल्य को सौंपा जा सकता है। आप संदर्भ प्रकार के आधार पर एक अशक्त प्रकार नहीं बना सकते। (संदर्भ प्रकार पहले से ही शून्य मान का समर्थन करते हैं।)
तो, नहीं, वे संदर्भ प्रकार नहीं हैं।
अशक्त प्रकार न तो मूल्य प्रकार हैं और न ही संदर्भ प्रकार। वे मूल्य प्रकारों की तरह अधिक हैं, लेकिन संदर्भ प्रकारों के कुछ गुण हैं।
स्वाभाविक रूप से, अशक्त प्रकारों के लिए सेट किया जा सकता है null
। इसके अलावा, एक अशक्त प्रकार एक सामान्य struct
बाधा को संतुष्ट नहीं कर सकता है । इसके अलावा, जब आप एक अशक्त प्रकार को HasValue
समान के साथ बॉक्स करते हैं, तो आपको एक बॉक्स वाले अशक्त प्रकार के बजाय false
एक null
सूचक मिलता है (एक समान स्थिति अनबॉक्सिंग के साथ मौजूद है)।
ये गुण अशक्त प्रकारों को गैर-मूल्य प्रकार बनाते हैं, लेकिन वे निश्चित रूप से संदर्भ प्रकार नहीं हैं। वे अपने स्वयं के विशेष अशक्त-मूल्य प्रकार हैं।
नहीं, अशक्त प्रकार वास्तव में एक संरचना है। रनटाइम समझदारी से आपके लिए एक शून्य मान की सेटिंग को हैंडल करेगा, एक संदर्भ प्रकार की उपस्थिति देगा, जब यह नहीं है ...।
अशक्त प्रकार संदर्भ प्रकार नहीं हो सकते।