Linq专题之var关键字
2016-04-13 13:26
246 查看
在c#1.0,c#2.0中声明一个变量时,总是要指定变量的类型,如果不指定变量类型编译器就会报错,产生编译错误。在c#3.0中我们可以不指定变量的具体类型,而使用一个新的关键字"var"来指定变量的类型,该变量的实际类型将在其初始化表达式中推到出来。下面实例代码中,我们用var声明了3个局部变量,并获取他们的类型:
运行代码可以看到:
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413130912301-1183769597.png)
我们从运行结果可以看到,最终numberid被推断出类型为System.Int32,name被推断出System.String,arrayCity推断为System.String[] 数组类型。完全是正确的。
但是在var使用过程中必须遵循3个原则:
1、var声明的变量必须包含初始化器,初始化器必须为一个表达式,且初始化器不能包含自身对象。
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413131821676-1125485756.png)
var numberid = numberid + 1;//编译错误
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413131852535-2134405789.png)
可以看到上面的编译错误很明显。
2、var声明的变量初始化值不能为null。
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413132047082-915516228.png)
3、var声明变量时,不能在同一语句中初始化多个隐式类型的变量。
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413132330520-1559272206.png)
看来var 关键字很方便,可以简化代码,但是大量使用var声明变量会使得代码难以理解。因此我们一般在Linq表达式中难以确定变量的查询结果的类型的时候使用var关键字是一个不错的选择。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq; namespace LinqDemo { class Program { static void Main(string[] args) { LingVar(); } private static void LingVar() { var numberid = 10086; var name = "IT少年"; var arrayCity = new string[] { "BeiJing", "ShangHai" }; Console.WriteLine("--numberid的类型----"); Console.WriteLine(numberid.GetType().ToString()); Console.WriteLine("--name的类型----"); Console.WriteLine(name.GetType().ToString()); Console.WriteLine("--arrayCity的类型----"); Console.WriteLine(arrayCity.GetType().ToString()); Console.ReadKey(); } } }
运行代码可以看到:
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413130912301-1183769597.png)
我们从运行结果可以看到,最终numberid被推断出类型为System.Int32,name被推断出System.String,arrayCity推断为System.String[] 数组类型。完全是正确的。
但是在var使用过程中必须遵循3个原则:
1、var声明的变量必须包含初始化器,初始化器必须为一个表达式,且初始化器不能包含自身对象。
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413131821676-1125485756.png)
var numberid = numberid + 1;//编译错误
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413131852535-2134405789.png)
可以看到上面的编译错误很明显。
2、var声明的变量初始化值不能为null。
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413132047082-915516228.png)
3、var声明变量时,不能在同一语句中初始化多个隐式类型的变量。
![](https://images2015.cnblogs.com/blog/352688/201604/352688-20160413132330520-1559272206.png)
看来var 关键字很方便,可以简化代码,但是大量使用var声明变量会使得代码难以理解。因此我们一般在Linq表达式中难以确定变量的查询结果的类型的时候使用var关键字是一个不错的选择。
相关文章推荐
- 蓝桥杯 小朋友排队+
- QLibrary加载so的注意事项
- android数据库sqlite基本操作。
- 可变参数列表
- 第七周项目(1)-普通函数求两点间距离
- Eclipse 下maven 笔记
- ubuntu系统的grub配置
- STL中二分查找 lower_bound()
- 关于java中文件下载中文乱码的事
- MyBatis异常 Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException:
- Hibernate 之 cascade 和 inverse
- Spark如何使用Akka实现进程、节点通信的简明介绍
- Podfile升级后的影响
- Best Time to Buy and Sell Stock
- Split函数,正则表达式与空字符串
- JSP大学实用教程(第2版)代码一
- 接受前台数据
- EXT.NET MVC 5 工作随笔02 传参时如果参数在当前页面获取不到时,用?解决
- C++第3次上机作业
- 规则引擎笔记