यह प्रश्न ३० मई २०१३ को मेरे ब्लॉग का विषय था । महान प्रश्न के लिए धन्यवाद!
आप एक खाली ड्राइववे पर घूर रहे हैं।
कोई आपसे पूछता है "क्या आपका ड्राइववे होंडा सिविक पकड़ सकता है?"
हाँ। हाँ यह कर सकते हैं।
कोई आपको दूसरे ड्राइववे पर बताता है। यह भी खाली है। वे पूछते हैं "क्या मेरे ड्राइववे की वर्तमान सामग्री आपके ड्राइववे में फिट हो सकती है?"
हाँ, ज़ाहिर है। दोनों ड्राइववे खाली हैं! तो स्पष्ट रूप से एक की सामग्री दूसरे में फिट हो सकती है, क्योंकि पहली जगह में कोई भी सामग्री नहीं है।
कोई आपसे पूछता है "क्या आपके ड्राइववे में होंडा सिविक है?"
नहीं, यह नहीं है।
आप सोच रहे हैं कि isऑपरेटर दूसरे प्रश्न का उत्तर देता है: इस मूल्य को देखते हुए, क्या यह उस प्रकार के चर में फिट होता है? क्या एक शून्य संदर्भ इस प्रकार के एक चर में फिट बैठता है? हाँ यह करता है।
यह सवाल नहीं है कि isऑपरेटर जवाब देता है। सवाल यह है कि isऑपरेटर जवाब तीसरा सवाल है। y is Xनहीं पूछता है " है yप्रकार का एक चर के एक कानूनी मूल्य X? " यह पूछते हैं, " है yप्रकार का ऑब्जेक्ट के लिए एक वैध संदर्भ X? " जब से एक अशक्त संदर्भ के लिए एक वैध संदर्भ नहीं है किसी भी का उद्देश्य किसी भी प्रकार, इस सवाल का जवाब "नहीं है "। वह मार्ग खाली है; इसमें होंडा सिविक शामिल नहीं है।
इसे देखने का एक और तरीका यह है कि y is Xप्रश्न का उत्तर "यदि मैंने कहा y as X, तो क्या मुझे एक अशक्त परिणाम मिलेगा? यदि y शून्य है, तो स्पष्ट रूप से उत्तर नहीं है!"
अपने प्रश्न पर थोड़ा गहरा देखने के लिए:
एक को उम्मीद है कि अशक्त मूल्य किसी भी संदर्भ (या अशक्त) प्रकार का है
एक का अर्थ यह माना जाएगा कि एक प्रकार मानों का एक सेट है , और टाइप x के एक चर के साथ एक मूल्य y की असाइनमेंट संगतता कुछ भी नहीं है और न ही जाँच से कम है कि क्या y सेट x का सदस्य है ।
यद्यपि यह प्रकारों को देखने का एक बहुत ही सामान्य तरीका है, लेकिन यह प्रकारों को देखने का एकमात्र तरीका नहीं है , और यह वह तरीका नहीं है जो C # प्रकारों को देखता है। अशक्त संदर्भ C # में किसी प्रकार के सदस्य नहीं हैं; काम अनुकूलता है नहीं केवल एक सेट की जाँच देखने के लिए अगर उसमें कोई मान। सिर्फ इसलिए कि एक शून्य संदर्भ असाइनमेंट प्रकार के एक चर के साथ संगत असाइनमेंट है एक्स का मतलब यह नहीं है कि शून्य प्रकार एक्स का सदस्य है। "असाइनमेंट" संबंध के साथ संगत है और "प्रकार का सदस्य है" संबंध स्पष्ट रूप से बहुत सारे हैं ओवरलैप, लेकिन वे सीएलआर में समान नहीं हैं।
यदि आप सिद्धांत के बारे में रुचि रखते हैं, तो इस विषय पर मेरे हाल के लेख देखें:
इस चीज़ को आप "प्रकार" कहते हैं? भाग एक
इस चीज़ को आप "प्रकार" कहते हैं? भाग दो