脚踏实地学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简化的语法
作者:秋壶冰月
出处:
http://www.cnblogs.com/qq0827
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给原文链接,否则保留追究法律责任的权利。