3.1 局部变量的隐式声明
在C# 4.0中可以使用局部变量的隐式声明,其实就是不用命名变量,在赋值时编译器自动识别变量类型,类似于JavaScript中的变量类型Var。
3.1.1 如何声明隐式局部变量
在C#中隐式变量声明使用Var类型。Var类型变量没有具体类型,只在赋值和具体程序中使用时,系统会自动转换成一个类型,如图3-1所示。
图3-1 隐式局部变量的声明和使用
系统将代码中使用到的隐式类型自动转换为String类型,运行结果如图3-2所示。
图3-2 隐式变量的使用效果
3.1.2 在foreach循环中使用隐式声明
在foreach循环中使用隐式声明是非常迅速快捷的方式,因为不用分析具体数据类型就可直接使用,代码以下。
执行结果如图3-3所示。
图3-3 执行结果显示
3.1.3 隐式类型变量的限制
隐式变量只限于用在局部变量中,不能用于类变量、返回值和参数中,举例如下。
如果这样声明就会产生一个编译错误,信息如下。
未能找到类型或命名空间名称“var”(是否缺少using指令或程序集引用?)
还有其他限制,如
var vtemp;
var vtemp1 = null;
var vtemp2 = vtemp2 + 1;
var vtemp3 = 9, vtemp4 = 8;
这样的声明同样会产生错误,如下所示。
隐式类型的局部变量必须已初始化。
无法将“<null>”赋予隐式类型的局部变量。
局部变量“vtemp2”在声明前无法使用。
隐式类型的局部变量不能有多个声明符。
上面四个错误说明在编译器中使用隐式类型还有很多不便,希望在以后的编译器中会得到改善。
3.1.4 隐式类型的局部数组
隐式类型局部数组的使用方式同隐式变量。数组的使用与C#语法相同,具体使用如下。
在数组的使用中,系统判定隐式类型是依据为它初始化时赋值给它的数据类型。
3.1.5 隐式类型变量的作用
隐式类型的使用便于使用foreach循环和Linq对象。前面已经演示了foreach,下面演示Linq隐式变量的使用。
执行结果如图3-4所示。
图3-4 使用LINQ的隐式类型查询
其实LINQ在使用时不只限于数据库的操作,还有很多操作可以完成,如数组、xml和list等。