[C#3] 2-var 类型推断
1.DEMO
static void Main() { var Num = 6; var str = "乱舞春秋"; var dou = 9.25d; Console.WriteLine(Num); Console.WriteLine(str); Console.WriteLine(dou); }
var关键字,用来声明并初始化局部变量。编译器根据=右边的语句推断出变量实际的类型。 所以使用var的要求就是右边的语句必须可以让编译器推断出实际的类型。所以=号右边是必须要有值的,即是必须要初始化,不能只是声明。 但是有些不便于阅读代码了。于此同时,C#3.0的出现另一个新特性[匿名类型]给了var用武之地。
var并不是表示弱类型了,如下IL代码:
1 .method private hidebysig static void Main() cil managed 2 { 3 .entrypoint 4 // 代码大小 41 (0x29) 5 .maxstack 1 6 .locals init ([0] int32 Num, 7 [1] string str, 8 [2] float64 dou) 9 IL_0000: nop 10 IL_0001: ldc.i4.6 11 IL_0002: stloc.0 12 IL_0003: ldstr bytearray (71 4E 1E 82 25 66 CB 79 ) 13 IL_0008: stloc.1 14 IL_0009: ldc.r8 9.25 15 IL_0012: stloc.2 16 IL_0013: ldloc.0 17 IL_0014: call void [mscorlib]System.Console::WriteLine(int32) 18 IL_0019: nop 19 IL_001a: ldloc.1 20 IL_001b: call void [mscorlib]System.Console::WriteLine(string) 21 IL_0020: nop 22 IL_0021: ldloc.2 23 IL_0022: call void [mscorlib]System.Console::WriteLine(float64) 24 IL_0027: nop 25 IL_0028: ret 26 } // end of method Test::Main
从第6-8行就可看出编译器做了正确的类型推断。
2.总结
var为编译器技巧,语法糖。匿名类型须此关键字搭配使用
作者:Blackheart
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。