2011-05-31 9 views
5

संभव डुप्लिकेट:
C#, int or Int32? Should I care?System.Int32 और int का MSIL समान होगा?

कृपया किसी भी एक मुझे पता है System.Int32 की MSIL जाने और पूर्णांक, एक ही या अलग होगा तो अलग जो एक हम का उपयोग करना चाहिए है।

संपादित करें:

इस

public enum MyEnum : Int32 
{ 
    AEnum = 0 
} 

संकलन नहीं होगा, लेकिन यह होगा

public enum MyEnum : int 
{ 
    AEnum = 0 
} 
+1

यह यहाँ समझाया गया है: http://stackoverflow.com/questions/62503/c-int-or-int32-should-i-care – Longball27

+0

अधिक विवरण के लिए यह http://stackoverflow.com/questions/5005319/why-cant-i-declare-an-enum-inheriting-from-byte-but-i-can-from-byte –

उत्तर

10

intSystem.Int32 के लिए एक उपनाम है, वे पूरी तरह से एक ही हैं।

enums केवल, प्रकार के रूप में अभिन्न प्रकार ले के रूप में इस अन्यथा संभव होगा:

using Int32 = System.String; 

public enum Something : Int32 
{ 
} 

यह सी # कल्पना, जिसमें कहा गया है

enum-declaration: 
[attributes] [enum-modifiers ] enum identifier [enum-base] enum-body [;] 

where 
enum-base: 
":" integral-type 

अभिन्न प्रकार के रूप में निर्दिष्ट के साथ के अनुसार:

integral-type: 
sbyte 
byte 
short 
ushort 
int 
uint 
long 
ulong 
char 
+0

मैंने अपना प्रश्न संपादित किया है, कृपया अभी जांचें –

+1

@ पंकज: आपका संपादन एक छोटा कोने-केस दिखाता है जहां 'int' और' Int32' अदला-बदले नहीं हैं, और उस स्थिति में संकलक आपको इसके बारे में बताता है। आप सुरक्षित रूप से यह मान सकते हैं कि जब भी कंपाइलर कोई त्रुटि उत्पन्न नहीं करता है तो परिणामी आईएल 'int' या 'Int32' के लिए बिल्कुल वही होगा। – LukeH

0

intSystem.Int32 के लिए एक उपनाम है तो वहाँ कोई अंतर नहीं

0

के रूप में हर किसी को पहले से ही बताया intInt32 के लिए एक उपनाम है ये वास्तव में एक ही कर रहे हैं।

आप इसे दृश्य स्टूडियो में int पर माउस का प्रयोग कर सकते हैं और पर क्लिक करें "अस्वीकरण पर जाएं"intstring के समान भी के लिए String

1

दोनों एक ही हैं एक उपनाम है, लेकिन intlanguage specification is the definitive source for C# syntax and usage

Int32 अपरिवर्तनीय मान प्रकार है कि मूल्यों के साथ हस्ताक्षर किए पूर्णांक है कि नकारात्मक +२१४७४८३६४८ (से लेकर प्रतिनिधित्व करता है Int32.MinValue निरंतर) सकारात्मक 2,147,483,647 के माध्यम से दर्शाया गया है (जो Int32.MaxValueद्वारा दर्शाया गया हैनिरंतर। MSDN

0

पुष्टि करें। System.Int32 काम नहीं करता है। मोनो 2।8 कंपाइलर sais:

t.cs(3,29): error CS1008: Type byte, sbyte, short, ushort, int, 
uint, long or ulong expected 

तो यह एक हार्डकोडेड भाषा परिभाषा नियम प्रतीत होता है।


यहाँ डेविल्स एडवोकेट होने की कोशिश कर रहा है:

शायद आप एक नाम टकराव में चल रहे हैं, और आप Int32 कहीं परिभाषित किया है (मैं प्रयास नहीं किया है कि क्या है कि कानूनी है, लेकिन यह हो सकता है एक समस्या)। यह योग्यता का प्रयास करें:

public enum MyEnum : System.Int32 
{ 
    AEnum = 0 
} 

+0

System.Int32 भी काम नहीं कर रहा है, क्या आप कृपया एक बार जांच सकते हैं? –

संबंधित मुद्दे