C# System.Int32和int的MSIL是否相同?
可能重复:C# System.Int32和int的MSIL是否相同?,c#,.net,asp.net,C#,.net,Asp.net,可能重复: 请任何人让我知道系统的MSIL。Int32和int将是相同或不同的,如果不同,那么我们应该使用哪一个 编辑: 这不会编译 public enum MyEnum : Int32 { AEnum = 0 } 但这会 public enum MyEnum : int { AEnum = 0 } int是系统的别名。Int32,它们完全相同 enums仅将整数类型作为类型,否则可能会: using Int32 = System.String; public enum
请任何人让我知道系统的MSIL。Int32和int将是相同或不同的,如果不同,那么我们应该使用哪一个 编辑: 这不会编译
public enum MyEnum : Int32
{
AEnum = 0
}
但这会
public enum MyEnum : int
{
AEnum = 0
}
int
是系统的别名。Int32
,它们完全相同
enums
仅将整数类型作为类型,否则可能会:
using Int32 = System.String;
public enum Something : Int32
{
}
这是根据C#spec制定的,C#spec规定
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
类型:int.NET框架类型:System.Int32
int
是系统的别名。Int32
因此没有区别这与大家已经说过的int
是Int32
的别名完全相同
您可以自己进行实验,将鼠标放在visual studio中的int
上,然后单击“转到去宽容”。
与
int
相同string
也是string
的别名,两者相同,但int
是
Int32是一种不可变的值类型,表示带符号的整数
从负值到
2147483648(由
Int32.MinValue常量)到
正2147483647(即
由Int32.MaxValue表示
常数
从
确认。System.Int32不工作。Mono 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
}
此处有说明:有关更多详细信息,请检查此项。我已编辑了我的问题,请检查now@Pankaj:您的编辑显示了一个小的角落,其中
int
和Int32
是不可互换的,在这种情况下,编译器会告诉您。您可以放心地假设,只要编译器不产生任何错误当生成的IL与int
或Int32
完全相同时。我已编辑了我的问题,请立即检查System.Int32也不工作,请检查一次好吗?