ITPub博客

首页 > Linux操作系统 > Linux操作系统 > C# 3.0 feature 1--Implicitly typed local variables

C# 3.0 feature 1--Implicitly typed local variables

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-08-12 17:02:27 0 删除 编辑

我们来看下列变量声明

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相同

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类型声明)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-612013/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 《Effective C#》
请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5297323