为什么在VS2010创建项目时选择net framework2.0的环境还可以使用var关键字?

时间:2020-11-27 17:00:49

var关键字是C# 3.0开始新增的特性,称为推断类型。

var可代替任何类型,编译器会根据上下文来判断你到底是想用什么类型,类似 object,但是效率比object高点。

var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式。

var定义变量有以下四个特点:

1.必须在定义时初始化

例如:      

<span style="white-space:pre">	</span>var a =1 ;      // IDE或编译器会根据你给a 的值1来"推论断定"a是一个整数类型  
<span style="white-space:pre">	</span>var b ="123";   // b被推论断定为string类型 

2.一旦初始化完成,就不能再给变量赋与初始值不同的值了

3.var要求是局部变量

4.使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样

*****************************************************************************************************************

那么问题来了:为什么在VS2010创建项目时选择net framework2.0的环境还可以使用var关键字?

    C# 代码属于托管代码,托管代码会被编译器编译成IL代码,真正运行时其实是IL代码!你设置的目标平台版本只可以保证你的IL代码可以正常的运行,但是并不能检查你的C# 代码是否完全符合C#2.0的规范,因为编译时使用的还是C#4.0编译器。var这个关键字只是语法上的新特性,编译完的IL代码和过去没有区别,这样的特性俗称“语法糖”,只是语法上用起来比较甜蜜,而实际上没有什么区别!所以即使你的代码中有var,那还是可以运行在旧版本的.NET Framework上!

当然,如果你使用的的新特性是本质上的改变,那就无法通过编译了!