Sunday 15 February 2015

c# - Why can't nullables be declared const? -


  [टेस्ट क्लास] पब्लिक क्लास MsProjectIntegration {const int? ProjectID = नल; // प्रकार 'int?' को const // घोषित नहीं किया जा सकता ...}  

मेरे पास const int क्यों नहीं है? ?

संपादित करें : कारण मैं एक कॉन्फ़ के रूप में एक रिक्त पूर्णांक चाहता था क्योंकि मैं इसे डेटाबेस से कुछ नमूना डेटा लोड करने के लिए उपयोग कर रहा हूं। अगर यह रिक्त है तो मैं सिर्फ रनटाइम पर नमूना डेटा को प्रारंभ करने जा रहा था। यह वास्तव में त्वरित परीक्षण प्रोजेक्ट है और जाहिर है मैं 0 या -1 का उपयोग कर सकता हूं, लेकिन int? सिर्फ सही डेटा संरचना की तरह मुझे क्या करना चाहता था। केवल पढ़ने के तरीके की तरह लगता है

यह सिर्फ नल है; केवल रनटाइम में निर्मित प्रकार को const घोषित किया जा सकता है (स्मृति से, यह बॉल्स, विभिन्न प्रकार के इंट, फ्लोट / डबल्स और स्ट्रिंग्स)।

क्यों? चूंकि संकलन समय पर विधानसभा में मूल्य सीधे एम्बेडेड हो जाता है, और यूज़र-डिफ़ाइंड प्रकारों को एम्बेड करने का कोई रास्ता नहीं है।

हालांकि, readonly कीवर्ड को चाहिए जो आपको चाहिए। const के विपरीत, किसी भी रीडॉनली फ़ील्ड को समय संकलन के बजाय रनटाइम पर आरंभ किया जाता है, इसलिए वे अधिक या कम आपके द्वारा इच्छित किसी भी अभिव्यक्ति के साथ आरंभ किया जा सकता है।

< P> संपादित करें: जैसा कि एरिक लिपर ने बताया, यह सीधा नहीं है उदाहरण के लिए, const दशमलव काम करता है।

यह:

  प्राइवेट कॉन्स्ट दशमलव दएन्सर = 42;  

... इस पर संकलन (ठीक, परावर्तक):

  [दशमलव (0, 0, (यूआईटी) 0, (यूआईटी) 0, (यूआईटी) 42)] प्राइवेट स्टैटिक रीडोनली डेसमल द एजर्स;  

No comments:

Post a Comment