क्योंकि "शून्य" मान होने के कारण, प्रकार शून्य हो जाना चाहिए। इस संदर्भ प्रकार (किसी भी वर्ग आप को परिभाषित करने और मानक पुस्तकालय) के लिए ठीक काम करता है, और यदि आप देखो तो आप देखेंगे कि लोग उपयोग अशक्त कर जब भी वे कोई मूल्य नहीं
Employee employee = Employees.Find("John Smith");
if(employee == null) throw new Exception("Employee not found");
मुद्दे के साथ एक संदर्भ वस्तु है आता है जब आप मान प्रकार int, char या float जैसे प्रकार का उपयोग करते हैं। संदर्भ प्रकारों के विपरीत, जो स्मृति में कहीं और डेटा के ब्लॉक को इंगित करता है, इन मानों को इनलाइन और इनलाइन में घुमाया जाता है (कोई पॉइंटर/संदर्भ नहीं होता है)।
इस वजह से, डिफ़ॉल्ट रूप से, मान प्रकार में शून्य मान नहीं है। आपके द्वारा प्रदान किए गए कोड में, माता-पिता के लिए असंभव है (मुझे वास्तव में आश्चर्य है कि यह आपके कंपाइलर द्वारा भी प्राप्त हुआ है - विजुअल स्टूडियो 2008 और शायद 2005 एक हरे रंग की रेखा रेखा खींचेंगे और आपको बताएंगे कि कथन हमेशा गलत है) ।
एक शून्य मान के लिए एक पूर्णांक के लिए आदेश में, आप के रूप में यह घोषणा करने के लिए की जरूरत है नल
int? parentID;
अब parentID, एक शून्य मान शामिल कर सकते हैं, क्योंकि यह अब एक सूचक (अच्छी तरह से है " संदर्भ ") 32 बिट पूर्णांक के बजाय, 32 बिट पूर्णांक के लिए।
तो उम्मीद है कि आप समझते हैं कि क्यों "जादू मूल्य" अक्सर मूल प्रकारों (मूल्य प्रकार) के साथ शून्य का प्रतिनिधित्व करने के लिए उपयोग किए जाते हैं। यह केवल बहुत बड़ी परेशानी है, और अक्सर एक बड़े प्रदर्शन हिट (लुकअप क्या बॉक्सिंग/अनबॉक्सिंग है), इन मान प्रकारों को मूल्य के संदर्भ के रूप में स्टोर करने के लिए उन्हें शून्य होने की अनुमति देने के लिए।
संपादित करें:
मुक्केबाजी और बॉक्स से निकालना (सी # प्रोग्रामिंग गाइड)
: के बारे में मुक्केबाजी/unboxing आगे के संदर्भ (क्या आप एक पूर्णांक == बातिल की आवश्यकता है) के लिए,
MSDN पर आलेख देखें
प्रदर्शन
सरल असाइनमेंट के संबंध में, मुक्केबाजी और अनबॉक्सिंग कम्प्यूटेशनल रूप से महंगा प्रक्रियाएं हैं। जब एक मान प्रकार बॉक्स किया जाता है, तो एक नई वस्तु आवंटित और निर्माण की जानी चाहिए। कम डिग्री के लिए, अनबॉक्सिंग के लिए आवश्यक कलाकार भी कम्प्यूटेशनल रूप से महंगा है। अधिक जानकारी के लिए, प्रदर्शन देखें।
यदि आप कम से कम एक उदाहरण दिखाते हैं तो आप बेहतर प्रदर्शन करेंगे। – GEOCHET
-1: कोई कोड नहीं। -1: कोई समस्या नहीं है। समस्या क्या है? क्या काम नहीं करता है? –
आपने चेक को उलट दिया है (parentid! = Null होना चाहिए), लेकिन मुझे लगता है कि सवाल मान्य है। +1 – erikkallen