脚踏实地学C#1-基元类型

基元类型:编译器直接支持的数据类型

    基元类型直接映射到FCL类库上,如int 和Int32是等价的,只不过是int是c#提供的,Int32是FCL类库提供的。

       int只是Int32的别名

using int=System.Int32;

使用Int32:

System.Int32 number = new System.Int32();
number = 2; 
Console.WriteLine(number); 
Console.ReadKey(); 

生成IL代码为:

.method private hidebysig static void Main(string[] args) cil managed 
   { 
       .entrypoint 
       .maxstack 1 
       .locals init ( 
           [0] int32 number) 
       L_0000: nop 
       L_0001: ldc.i4.0 
       L_0002: stloc.0 
       L_0003: ldc.i4.2 
       L_0004: stloc.0 
       L_0005: ldloc.0 
       L_0006: call void [mscorlib]System.Console::WriteLine(int32) 
       L_000b: nop 
       L_000c: call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey() 
       L_0011: pop 
       L_0012: ret 
   }

使用int

int number = new int(); 
number = 2; 
Console.WriteLine(number); 
Console.ReadKey(); 

生成IL代码为:

.method private hidebysig static void Main(string[] args) cil managed 
{ 
    .entrypoint 
    .maxstack 1 
    .locals init ( 
        [0] int32 number) 
    L_0000: nop 
    L_0001: ldc.i4.0 
    L_0002: stloc.0 
    L_0003: ldc.i4.2 
    L_0004: stloc.0 
    L_0005: ldloc.0 
    L_0006: call void [mscorlib]System.Console::WriteLine(int32) 
    L_000b: nop 
    L_000c: call valuetype [mscorlib]System.ConsoleKeyInfo[mscorlib]System.Console::ReadKey() 
    L_0011: pop 
    L_0012: ret 
} 

     通过生成的IL代码对比,发现int和Int32生成的IL代码是一样

     上面给number赋值的语法,很不方便,相信没有人会这样,幸好编译器允许代码以简化的语法来操纵他们,

int number=2;   //C#简化的语法 
Int32 number=2; //FCL简化的语法
posted @ 2013-08-11 13:17  秋壶冰月  阅读(969)  评论(0编辑  收藏