C# 3.0中引入了很多新的类型,比如说var,匿名类型,隐形数组等等.体验了一把,拿出来在这里跟大家分享.
首先VB中不支持var类型,汗......(好久没写C#了,有点手生)
回到C#中,所谓var是一个不确定类型,就是说初始化的时候才定义变量的类型.
所以我们可以这样写
var a = "abc";
var b = 1;
var c = new object();
等价于
string a = "123";
int b = 1;
object c = new object();
但是使用VAR时需要注意以下几点
(1) 变量声明时必须初始化.
(2) 声明中不能包含变量本身.
(3) 不能初始化NULL值.
联想到JS的var类型,是不是这里变量也是可变类型的呢?
做了如下尝试:
var i = "abc";
i = 1;
编译的时候提示如下错误"Error 1 Cannot implicitly convert type 'int' to 'string' ",由此可见由var声明的变量在初始化时指定了类型,后面该变量就只能是定义的类型而不能改变了.
总结,var变量应用的范围不会很广,因为它有着严格的声明条件.当然可能比较适合LINQ返回类型不固定的情况.只能说在特定的条件下使用VAR变量不失为一种好的解决方案.