Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Int32和int的MSIL是否相同?_C#_.net_Asp.net - Fatal编程技术网

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也不工作,请检查一次好吗?