Linq专题之var关键字

  在c#1.0,c#2.0中声明一个变量时,总是要指定变量的类型,如果不指定变量类型编译器就会报错,产生编译错误。在c#3.0中我们可以不指定变量的具体类型,而使用一个新的关键字"var"来指定变量的类型,该变量的实际类型将在其初始化表达式中推到出来。下面实例代码中,我们用var声明了3个局部变量,并获取他们的类型:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Linq;
 6 
 7 namespace LinqDemo
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13 
14             LingVar();
15         }
16 
17         private static  void LingVar()
18         {
19 
20             var numberid = 10086;
21 
22             var name = "IT少年";
23 
24             var arrayCity = new string[] { "BeiJing", "ShangHai" };
25 
26 
27             Console.WriteLine("--numberid的类型----");
28             Console.WriteLine(numberid.GetType().ToString());
29 
30             Console.WriteLine("--name的类型----");
31             Console.WriteLine(name.GetType().ToString());
32 
33             Console.WriteLine("--arrayCity的类型----");
34             Console.WriteLine(arrayCity.GetType().ToString());
35 
36             Console.ReadKey();
37 
38 
39         }
40     }
41 }

运行代码可以看到:

我们从运行结果可以看到,最终numberid被推断出类型为System.Int32,name被推断出System.String,arrayCity推断为System.String[]  数组类型。完全是正确的。

但是在var使用过程中必须遵循3个原则:

1、var声明的变量必须包含初始化器,初始化器必须为一个表达式,且初始化器不能包含自身对象。

var numberid = numberid + 1;//编译错误

可以看到上面的编译错误很明显。

2、var声明的变量初始化值不能为null。

3、var声明变量时,不能在同一语句中初始化多个隐式类型的变量。

看来var 关键字很方便,可以简化代码,但是大量使用var声明变量会使得代码难以理解。因此我们一般在Linq表达式中难以确定变量的查询结果的类型的时候使用var关键字是一个不错的选择。

posted @ 2016-04-13 13:26  IT少年  阅读(1295)  评论(0编辑  收藏  举报