दिलचस्प पोस्ट
मैं एपीपीनेट एमवीसीएल में एचटीटीपीकॉन्टेक्स कैसे मॉक का उपयोग कर रहा हूं? एक इनलाइन फॉर्मसेट को पूर्व में जमा करें? MongoDB में एम्बेडेड दस्तावेज़ फ़िल्टर करना अंतरिक्ष के साथ एक फ़ोल्डर नाम वाले बैच फ़ाइल में पूर्ण पथ कैसे लिख सकता है? गिट मुझे पोस्ट-पुल मर्ज कमिट संदेश के लिए क्यों प्रेरित करती है? सर्वश्रेष्ठ अभ्यास जावास्क्रिप्ट और बहुभाषी SOAP के लिए एक अच्छा सी ++ लाइब्रेरी एंड्रॉइड एमुलेटर पर Google मानचित्र v2 चलाना रिपॉजिटरी और सर्विस लेयर के बीच का अंतर? किसी को भी MediaRecorder ParcelFileDescriptor और createPipe () के साथ काम करना है? रेल 4: मैं सास मैपिंग का उपयोग कैसे करूं? वाक्यांशों के भीतर कीवर्ड गणना और हाइलाइट करें क्या IE 8 की संख्या प्रति पृष्ठ स्टाइलशीट की संख्या पर है? विजुअल स्टूडियो 2010 प्रोजेक्ट्स के लिए मर्कुरियल सी ++ में एक्सटर्न का उपयोग कब करें

C # int, Int32 और enums

यदि int Int32 का पर्याय है, तो क्यों करता है

 enum MyEnum : Int32 { Value = 1 } 

… संकलन नहीं? जहाँ तक

 enum MyEnum : int { Value = 1 } 

होगा, भले ही int शब्द पर कर्सर मँडरा होगा struct system.Int32 प्रदर्शित करेगा?

Solutions Collecting From Web of "C # int, Int32 और enums"

अंतर्निहित प्रकार वास्तव में एक ही है, लेकिन संकलक सटीक उपनाम के रूप में होने वाले प्रकार पर निर्भर करता है। यह पार्सिंग के आधार पर एक संकलन त्रुटि है। मैंने सी # व्याकरण विनिर्देश और अन्तर्निहित प्रकार पर एक नज़र लिया, जो उपनाम पर आधारित टोकन के रूप में परिभाषित किए गए हैं (जैसे '' इंट ',' इकाई '… आदि)। पारसर अभिन्न प्रकार के व्याकरण नियम से विशिष्ट तार की अपेक्षा करता है।

त्रुटि एक पार्सिंग त्रुटि है, भले ही दोनों enum Enum : int अर्थ enum Enum : Int32 जैसा होता है।

मुझे इस सीमा को पार्स करने के लिए मजबूर करने का कारण नहीं पता है, लेकिन मैं अनुमान लगाने की कोशिश कर सकता हूं: चूंकि इंट32 एक खोजशब्द नहीं है, इसलिए यह अन्य वास्तविक वास्तविक संरचना को संदर्भित कर सकता है। यदि पार्सर को प्रत्येक आधार प्रकार के लिए अलग-अलग एएसटी बनाने के लिए प्रकार जानना होता है तो यह टोकन पर निर्भर नहीं हो सकता जो कि कोई खोजशब्द नहीं है।

हालांकि सी # विनिर्देश इंट कीवर्ड को स्पष्ट उर्फ सिस्टम.आईएनटी 32 के रूप में परिभाषित करता है, यह अभी भी एक समस्या है जो पार्सिंग चरण के दौरान स्पष्ट प्रकार (इंट 32) के बारे में जानकारी प्राप्त करता है क्योंकि इसके लिए कई संदर्भों की आवश्यकता होती है जिसे इस चरण पर अनुमानित नहीं किया जा सकता है।

एक परिचित जिज्ञासा … भाषा युक्ति राज्यों (14.1):

एक enum घोषणा स्पष्ट रूप से एक अंतर्निहित प्रकार के बाइट, sbyte, short, ushort, int, uint, लंबे या उलंगा घोषित कर सकता है। ध्यान दें कि चारों को एक अंतर्निहित प्रकार के रूप में इस्तेमाल नहीं किया जा सकता है एक enum घोषणा जो स्पष्ट रूप से किसी अंतर्निहित प्रकार की घोषणा नहीं करता है, अंतर्निहित प्रकार int है

लेकिन चूंकि आईटी आमतौर पर System.Int32 लिए एक उपनाम है। System.Int32 यह सोचने में अनुचित नहीं है कि या तो काम हो सकता है … लेकिन वास्तव में ऐसा नहीं है। यह आमतौर पर एक बड़ी समस्या नहीं है, लेकिन किसी को भी कम नहीं है।