यह एक बग है जिसे आप 0.0 का उपयोग कर सकते हैं। संकलक केवल 0 के रूप में शून्य के मूल्य के साथ सभी निरंतर अभिव्यक्तियों को स्पष्ट करता है।
अब, कंपाइलर के लिए यह सही है कि intवह C # 5 विनिर्देशन के खंड ६.१.३ के अनुसार ० की अपनी निरंतर अभिव्यक्ति से एक अंतर्निहित रूपांतरण की अनुमति दे :
एक अंतर्निहित गणना रूपांतरण दशमलव-पूर्णांक-शाब्दिक 0 को किसी भी एनुम-प्रकार और किसी भी अशक्त-प्रकार में परिवर्तित करने की अनुमति देता है जिसका अंतर्निहित प्रकार एक एनुम-प्रकार है। बाद के मामले में रूपांतरण का मूल्यांकन अंतर्निहित एनम-प्रकार में परिवर्तित करके और परिणाम को लपेटकर ()4.1.10) किया जाता है।
मैंने पहले इस बारे में C # टीम के साथ बात की है: मानों को मानने के लिए उन्होंने 0.0 (और वास्तव में 0.0m और 0.0f) से आकस्मिक रूपांतरण को हटाना पसंद किया होगा , लेकिन दुर्भाग्य से मैं इसे इकट्ठा करता हूं बहुत अधिक कोड - भले ही इसे कभी भी पहली जगह की अनुमति नहीं दी जानी चाहिए।
मोनो mcsसंकलक इन सभी फ़्लोटिंग पॉइंट रूपांतरणों को प्रतिबंधित करता है , हालांकि यह अनुमति देता है:
const int Zero = 0;
...
SomeEnum x = Zero;
तथ्य यह है कि बावजूद Zeroएक निरंतर अभिव्यक्ति लेकिन है नहीं एक दशमलव-पूर्णांक शाब्दिक।
मैं भविष्य में किसी भी पूर्णांक स्थिर अभिव्यक्ति की अनुमति देने के लिए 0 (यानी की नकल mcs) के साथ सी # विनिर्देश परिवर्तन को देखकर आश्चर्यचकित नहीं होगा , लेकिन मैं अस्थायी बिंदु रूपांतरणों की कभी आधिकारिक तौर पर सही होने की उम्मीद नहीं करूंगा । (मैं सी # के भविष्य की भविष्यवाणी करने से पहले गलत था, बिल्कुल ...)
1.0।