C# 3.0 feature 1--Implicitly typed local variables


我们来看下列变量声明

None.gif var i = 5 ;
   var numbers
= new   int [] {1,2,3} ;

首先,C# compiler 会在同一个namespace范围内寻找用户自定义的var类型,如果找到,则把i, numbers做作var类型处理。如果没找到,则认为i, numbers为implicitly typed local variables,并根据其初始值确实其类型,上述代码的IL代码和下列代码的IL相同

None.gif int  i = 5 ;
   int [] numbers = new   int [] {1,2,3} ;

使用Implicitly typed local variables时应遵守下列约束:
   1. The declarator must include an initializer
   2. The initializer must be an expression
   3. The initializer expression must have a complie-time type which cannot be the null type.
   4. The local variable declaration cannot include multiple declarations.
   5. The initializer cannot refer to itself.
  
粗一看,额的神啊,一共有五条约束,还挺麻烦的,其实归纳下来主要就一句话,必须要让编绎器能从initializer准确推断出变量的类型,编绎器也是人啊,它需要根据推断出来的类型为变量分配内存空间。
比如: var x = {1,2,3} //error, cannot infer the type from {1,2,3"}
              var x = new int[]{1,2,"3}; // right. x is an array of type integer

最后说一下Implicitly typed local variable的使用范围,它可不是到处能用。仅仅可以用于下面四种情况
   1. 局部变量声明
   2. for 语句中变量声明)
   3. using 语句初始化变量时.
   4. foreach 中iterator类型声明)

转载于:https://www.cnblogs.com/hiber/archive/2007/04/16/715641.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值