वैल्यू टाइप और संदर्भ प्रकारों के बीच महत्वपूर्ण अंतर यह है कि मान प्रकारों में इन "मान अर्थशास्त्र" हैं। डेटटाइम, इंट 32 और अन्य सभी मूल्य प्रकारों की कोई पहचान नहीं है, एक इंट 32 "42" अनिवार्य रूप से किसी भी अन्य इंट 32 से समान मूल्य के साथ अलग नहीं है।
सभी मूल्य प्रकार "ऑब्जेक्ट्स" या तो स्टैक पर या संदर्भ प्रकार ऑब्जेक्ट के हिस्से के रूप में मौजूद हैं। एक विशेष मामला यह है कि जब आप किसी ऑब्जेक्ट या इंटरफ़ेस में मान प्रकार का उदाहरण डालते हैं - इसे "मुक्केबाजी" कहा जाता है, और यह केवल एक डमी संदर्भ-प्रकार ऑब्जेक्ट बनाता है जिसमें केवल उस मान को शामिल किया जाता है जिसे वापस निकाला जा सकता है ("अनबॉक्सिंग") ।
दूसरी ओर, संदर्भ प्रकारों की पहचान है। एक "नया ऑब्जेक्ट()" किसी अन्य "ऑब्जेक्ट()" के बराबर नहीं है, क्योंकि वे जीसी ढेर पर अलग-अलग उदाहरण हैं। कुछ संदर्भ प्रकार बराबर विधि और अधिभारित ऑपरेटरों को प्रदान करते हैं ताकि वे अधिक मूल्यवान व्यवहार कर सकें, उदाहरण के लिए। एक स्ट्रिंग "एबीसी" अन्य "एबीसी" स्ट्रिंग के बराबर होती है भले ही वे वास्तव में दो अलग-अलग वस्तुएं हों।
तो जब आपके पास कोई संदर्भ हो, तो इसमें या तो वैध ऑब्जेक्ट का पता हो सकता है, या यह शून्य हो सकता है। जब मान प्रकार ऑब्जेक्ट्स शून्य-शून्य होते हैं, तो वे केवल शून्य होते हैं। उदाहरण के लिए। एक पूर्णांक शून्य, एक फ्लोट शून्य, बूलियन झूठी, या डेटटाइम। MinValue। यदि आपको "शून्य" और "मूल्य गुम/शून्य" के बीच अंतर करने की आवश्यकता है, तो आपको या तो एक अलग बूलियन ध्वज का उपयोग करने की आवश्यकता है, या बेहतर, अभी तक .NET 2.0 में Nullable < टी> कक्षा का उपयोग करें। जो बस मूल्य और एक बुलियन ध्वज है। सीएलआर में भी समर्थन है ताकि हस्वाल्लू के साथ एक नालीबल का मुक्केबाजी = झूठी नतीजे में झूठे नतीजे न हों, झूठ + शून्य के साथ एक बॉक्स वाली संरचना में नहीं, क्योंकि यह होगा कि आप इस संरचना को स्वयं लागू करना चाहते हैं।
स्रोत
2009-03-27 12:31:06
यह जॉन जॉन नहीं है। –