C# 隐式类型—关键字:var

[ C# 3.0/.Net 3.x 新增特性 ]

2.1 犹抱琵琶半遮面—你能猜出我是谁?

   以前,我们在定义每个变量时都需要明确指出它是哪个类型。但是,当有了var之后,一切变得那么和谐,我们可以用一个var定义所有的类型。

    var age = 100;
    age += 150;

    var name = "";
    name = "edisonchou";

    Console.WriteLine("age={0}", age);
    Console.WriteLine("name={0}", name);

 

  点击调试,发现编译器自动帮我们匹配上了正确的类型并成功显示出来:

  那么,我们又好奇地想知道编译器到底是否识别出来了指定的类型,于是我们再次通过反编译工具来一看究竟:

  可以看出,我们可爱的CSC正确地帮我们推断出了正确的类型,不由得想给它点32个赞了!

  但是,变量类型不可更改,因为声明的时候已经确定类型了,例如我们在刚刚的代码中给变量赋予不同于定义时的类型,会出现错误。

2.2 好刀用在刀刃上—隐式类型应用场景

  在数据型业务开发中,我们会对一个数据集合进行LINQ查询,而这个LINQ查询的结果可能是ObjectQuery<>或IQueryable<>类型的对象。因此,在目标具体类型不明确的情况下,我们可以用var关键来声明:

List<UserInfo> userList = roleService.LoadRoles(param);
var data = from u in userList
           where u.IsDel == 0
           select u;

2.3 但“爱”就是克制—隐式类型使用限制

  (1)被声明的变量是一个局部变量,而不是静态或实例字段;

  (2)变量必须在声明的同时被初始化,编译器要根据初始化值推断类型;

  (3)初始化不是一个匿名函数,同时初始化表达式也不能是 null

  (4)语句中只声明一次变量,声明后不能更改类型;(详见上面的例子)

  (5)赋值的数据类型必须是可以在编译时确定的类型

 

出处:http://edisonchou.cnblogs.com

posted @ 2020-05-29 11:22  delafqm  阅读(161)  评论(0编辑  收藏  举报