सी # में लगातार


9

संकलक विधानसभा मेटाडेटा में निरंतर मान क्यों संग्रहीत करता है? क्या वे सीधे विधानसभा मेटाडेटा से इंटरमीडिएट भाषा कोड के लिए एम्बेडेड हैं?


1
यह वास्तव में 'क्यों' को संबोधित नहीं करता है, लेकिन फिर भी दिलचस्प है: stackoverflow.com/a/2128633/128384
stijn

मैं इस सवाल से भ्रमित हूं। मेटाडेटा में नहीं तो और कहाँ संग्रहीत होंगे ? क्या आप प्रश्न को स्पष्ट कर सकते हैं?
एरिक लिपर्ट

जवाबों:


4

इसके बारे में सोचने का सबसे अच्छा तरीका मुझे लगता है: संकलन के समय एक कास्ट को शाब्दिक रूप में परिवर्तित किया जाता है जहां इसका उपयोग किया जाता है।

एकमात्र कारण यह विधानसभा में प्रकट में जाता है जिसे इसे उपभोक्ताओं के लिए सुलभ बनाने के लिए परिभाषित किया गया था। यह एक दिए गए प्रकार का एक हिस्सा है और उस प्रकार का मेटाडेटा इसे असेंबली में संग्रहीत किया जाता है, न कि असेंबली जो इसका उपभोग करते हैं।

तो, यह खपत में एक इन-लाइन शाब्दिक है, और मेटाडेटा में एक उपभोज्य प्रकार-संलग्न संपत्ति या क्षेत्र है।


2

मैंने काफी लंबे समय तक खुद पर शोध किया और एक किताब से पाया कि यही कारण हो सकता है ...

चूंकि निरंतर मान कभी नहीं बदलते हैं, स्थिरांक को परिभाषित प्रकार का हिस्सा माना जाता है। इसलिए स्थिरांक को परिभाषित करने से मेटाडेटा बनता है।


1

मुझे लगता है कि आप दो विधानसभाओं को मिलाते हैं।

स्थिरांक को केवल विधानसभा में मेटाडेटा में संग्रहीत किया जाता है जहां इसे परिभाषित किया गया है । मेटाडेटा में एक विधानसभा में सभी प्रकार और सदस्यों के बारे में जानकारी होती है और स्थिरांक सदस्य होते हैं।

निरंतर के बारे में कोई जानकारी विधानसभा में संग्रहीत नहीं की जाती है जहां इसका उपयोग किया जाता है । निरंतर मान का उपयोग सीधे IL में किया जाता है जैसे कि आपने निरंतर संख्या या स्ट्रिंग को सीधे स्रोत में लिखा था।

एक उदाहरण: मेरे अनुप्रयोगों में से एक डेटाबेस तालिकाओं और क्षेत्रों की पहचान करने के लिए बहुत सारे स्थिरांक का उपयोग करता है। मेरे पास एक असेंबली है जिसमें केवल सभी स्थिरांक हैं।

जब मैं एप्लिकेशन का निर्माण करता हूं तो मैं विजुअल स्टूडियो में "स्थिरांक" असेंबली का संदर्भ जोड़ता हूं। चूंकि विधानसभा में केवल स्थिरांक होते हैं इसलिए मेरे आवेदन में इसका कोई संदर्भ नहीं है और रन-टाइम पर "स्थिरांक" विधानसभा की आवश्यकता नहीं है।


2
यह वास्तव में व्याख्या नहीं करता है कि मेटाडेटा में स्थिरांक क्यों संग्रहीत किए जाते हैं, हालांकि। यह चारों ओर नाचता है, लेकिन मुझे नहीं लगता कि ओपी दो विधानसभाओं को भ्रमित कर रहा है। आप इसे दो-विधानसभा के मुद्दे के रूप में देखते हैं क्योंकि आप दो विधानसभाओं का उपयोग करते हैं, लेकिन मुझे नहीं लगता कि अभ्यास आम है; स्थिरांक आमतौर पर उसी विधानसभा में परिभाषित किए जाते हैं जहां उनका उपयोग किया जाता है।
रॉबर्ट हार्वे

@RobertHarvey ठेठ मामले की आपकी अनुमान हमारे कई उद्यमी सी # सहयोगियों के कौशल को कम कर देता है, मुझे कई बार यह बताना पड़ता है कि एक सहकर्मी क्या है और आप उन्हें असेंबली में क्यों नहीं बुलाते हैं।
जिमी होफा

1

लगातार संकलन समय पर जाना जाता है और फिर उन्हें विधानसभा के मेटाडेटा में संग्रहीत किया जाता है। इसका मतलब यह है कि आप केवल आदिम प्रकारों के लिए स्थिरांक को परिभाषित कर सकते हैं।

हाँ, वे सीधे मेटाडेटा से लोड होते हैं। रनटाइम के दौरान मेमोरी आवंटन नहीं होगा।


1
दशमलव एक आदिम प्रकार नहीं है, लेकिन आप दशमलव स्थिरांक बना सकते हैं। और आप किसी भी संदर्भ प्रकार के स्थिरांक बना सकते हैं, बशर्ते कि कोई अशक्त हो।
एरिक लिपर्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.