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