前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[C#3] 2-var 类型推断

[C#3] 2-var 类型推断

作者头像
blackheart
发布2018-01-19 16:02:02
6620
发布2018-01-19 16:02:02
举报
文章被收录于专栏:blackheart的专栏blackheart的专栏

1.DEMO

代码语言:javascript
复制
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代码:

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-03-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.DEMO
  • 2.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档