[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为编译器技巧,语法糖。匿名类型须此关键字搭配使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值