कुछ हद तक अकादमिक प्रश्न, लेकिन: मूल्य प्रकार जैसे इंट वास्तव में काम कैसे काम करते हैं?वैल्यू प्रकार वास्तव में .NET में कैसे काम करता है?
मैंने यह पता लगाने के लिए mscorlib पर परावर्तक का उपयोग किया है कि System.Int32 कैसे कार्यान्वित किया गया है, और यह केवल एक स्ट्रक्चर है जो System.ValueType से प्राप्त होता है। मैं मूल्य धारण करने वाले बिट्स के ऐरे की रेखाओं के बीच कुछ ढूंढ रहा था, लेकिन मुझे केवल एक ऐसा क्षेत्र मिला जो int घोषित किया गया - जिसका अर्थ है कि यह एक परिपत्र संदर्भ है?
मेरा मतलब है, मैं "int i = 14;" लिख सकता हूं, लेकिन नंबर 14 को किसी भी तरह से संग्रहीत करने की आवश्यकता है, लेकिन मुझे "32-बिट्स का ऐरे" या पॉइंटर या कुछ नहीं मिला।
क्या यह कुछ जादू है जो संकलक करता है, और ये जादू प्रकार विनिर्देश का हिस्सा हैं? (सिस्टम के बारे में कैसे। एट्रिब्यूट या सिस्टम। अपवाद "विशेष" प्रकार हैं)
संपादित करें: यदि मैं अपनी खुद की संरचना घोषित करता हूं, तो मैं इसमें फ़ील्ड जोड़ता हूं। वे फ़ील्ड एक अंतर्निहित प्रकार के हैं, उदाहरण के लिए int। तो सीएलआर जानता है कि मैं एक int पकड़ो। लेकिन यह कैसे पता चलता है कि एक int 32-बिट्स है, हस्ताक्षरित? क्या यह बस इतना है कि विशिष्टता कुछ आधार प्रकार निर्दिष्ट करती है और इसलिए उन्हें "जादू" बनाती है, या क्या कोई तकनीकी तंत्र है? हाइपोटेटिकल उदाहरण: यदि मैं एक इंट 36 घोषित करना चाहता हूं, तो यह 36 बिट्स के साथ एक इंटीजर है, क्या मैं एक प्रकार का निर्माण कर सकता हूं जो ठीक को इंट 32 (4 अतिरिक्त बिट्स ऑफसी के अलावा) निर्दिष्ट करता है "ठीक है, 36 को अलग करें बिट्स ", या पत्थर में बने अंतर्निहित प्राइमेटिव हैं और मुझे किसी भी तरह से इस पर काम करना होगा (यानी एक इंट 64 और कोड का उपयोग करके जो केवल अंतिम 36 बिट्स सेट करता है)?
जैसा कि कहा गया है, सभी अकादमिक और काल्पनिक, लेकिन मैं हमेशा इसके बारे में सोचता था।
वास्तव में महान प्रश्न, मैंने सोचा है कि जादू खुद क्या है। – Pierreten
मैं भी, मैं इस सवाल की अपेक्षा कर रहा था कि कैसे मूल्य प्रकार काम करते हैं i.e. स्टैक बनाम ढेर आवंटित आदि, लेकिन मैं इसके बारे में उत्सुक हूं। – Davy8
अपने संपादन को पुन: संपादित करें: जहां तक मैं कह सकता हूं, यदि आप Int36 बनाना चाहते हैं, तो आपको इसे किसी भी तरह से सी # या आईएल में बाहर करना होगा, जो आपको पिछले 28 के साथ Int32 + Int8 या Int64 का उपयोग करने के लिए मजबूर करेगा बिट्स अनदेखा या जो कुछ भी। कच्चे अंतर्निहित आभासी मशीन में Int36 जोड़ने का एकमात्र तरीका है और यह समझता है कि बिट-स्तरीय प्रतिनिधित्व आपके स्वयं के सीएलआर ला ला मोनो या रोटर को लागू करना होगा। – itowlson