2012-10-23 13 views
6

जहां बी ए से निकला है अगर मैं दो वर्गों, A और B है:सूचना

class A {} 
class B : A { } 

मैं काफी खुशी से B का एक उदाहरण A लिए Upcast कर सकते हैं।

B b = new B(); 
A a = b; 

अब, मैं समझ सकते हैं कि कैसे क्रम निर्धारित कर सकते हैं कि अंतर्निहित ग्रुप बी है ECMA-335 (सामान्य भाषा इन्फ्रास्ट्रक्चर (CLI) विभाजन मैं छठी) के पेज 132 के रूप में, राज्यों

वस्तुओं तत्काल प्रकारों में को पर्याप्त समय तक रनटाइम पर सटीक प्रकार ( उनके सामान्य तर्कों सहित) के साथ पर्याप्त जानकारी लेनी होगी। [दलील: यह सही ढंग से -के कहने परीक्षण, साथ ही प्रतिबिंब में कास्टिंग और लागू करने के लिए आवश्यक है क्षमताओं

तो, क्रम में पता है कि यह में जमा हो जाती है, वास्तव में है, हालांकि अंतर्निहित प्रकार B है एक A। मुझे इस तथ्य के बारे में पता है कि मुझे B पर उपलब्ध विधियों को नहीं दिखाई देगा, लेकिन यदि अंतर्निहित प्रकार B है, तो यह भंडारण स्थान A के प्रकार को कैसे संग्रहीत करता है?

क्या यह समझ में आता है?

उत्तर

7

वस्तु एक बी है, और CLI जानता है कि यह एक बी है बात यह है कि एक के बारे में जानता है, मुख्य रूप से संकलक, जो तब या स्थानीय (ग्रुप ए की जा रही है या के रूप में क्षेत्र वाणी है में विधि चेनिंग जैसे कुछ मामलों, प्रकार को विधि के रिटर्न प्रकार के माध्यम से जाना जाता है, जो कॉलर के आईएल में कठोर मुद्रित है)। तो मूल रूप से: कॉलिंग कोड स्वयं ही कहता है "मुझे लगता है कि यह एक ए है"। असाइनमेंट इत्यादि आमतौर पर अग्रिम में सभी सत्यापन योग्य होते हैं, इसलिए इसे गलत होने का कोई खतरा नहीं होता है। यदि आप जानबूझकर गलत होने के लिए आईएल को हैक करने का प्रयास करते हैं तो रनटाइम आपको बताएगा और विधि को चलाने से इंकार कर देगा। और इन कारणों से, किसी स्थानीय/फ़ील्ड को ज्ञात-टू-बी-बी मान का असाइनमेंट किसी भी प्रकार की जांच की आवश्यकता नहीं है - यह केवल एक प्रत्यक्ष असाइनमेंट है।

+0

चीयर्स मार्क, जिसने इसे समझाया है। –

3

वस्तु का वास्तविक प्रकार हमेशा वस्तु के साथ ढेर पर संग्रहीत होता है। एक संदर्भ जो उस ऑब्जेक्ट को इंगित करता है, एक अलग प्रकार का हो सकता है जब तक कि उस प्रकार को वास्तविक प्रकार से निर्दिष्ट किया जा सके (उदा। बेस क्लास या उस प्रकार का कार्यान्वित इंटरफ़ेस)।

ढेर पर प्रत्येक वस्तु के साथ संग्रहीत डेटा की एक छोटी राशि होती है - उस वस्तु का प्रकार उन चीजों में से एक है।

संबंधित मुद्दे