一.神奇的var
在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。
1. 相同点,它可以用var来声明任何类型的局部变量。
2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。
二.相同点
它可以声明
var integer = 10;
var name = "edisundong";
var numbers = new int[] { 1, 2, 3 };
三.不同点
var仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于
int integer = 10;
string name = " edisundong ";
int[] numbers = new int[] { 1, 2, 3 };
三.注意点
1.在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式,如果有下面的语句:
var integer;
integer = 10;
编译时会报Implicitly typed locals must be initialized错误。
2.在使用var声明一个局部变量后,它仍然具有强类型,可以做如下测试:
var integer = 10;
integer = " edisundong ";
编译时会报Cannot implicitly convert type 'string' to 'int'错误。
3. 初始化器表达式的编译期类型不可以是空(null)类型,编译器无法根据null来推断出局部变量的类型,如有下面的语句:
var integer = null;
编译时会报Cannot assign '<null>' to an implicitly typed local错误。
4. 初始化语句必须是一个表达式,初始化表达式不能包含它自身,但是可以是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。
如可以这样去声明:
var coll = new Hashtable();
5. var的声明仅限于局部变量,也可以包含在foreach、for、using语句中。下面的使用是错误的:
class Program
{
private var i = 10; //全局私有变量。
static void Main(string[] args)
{
}
}
编译时会报The contextual keyword 'var' may only appear within a local variable declaration错误。
分享到:
相关推荐
VS2008下c#3.0新特性之var源码
c# 3.0 新特性(en)
C# 3.0 锐利体验系列课程(1)
C# 3.0新语言特性在.NET2.0基础上进行了改进,这些改进的功能可以大大简化我们编写程序。
C# 3.0 锐利体验系列课程(3):查询表达式LINQ(1).rar
C# 3.0 锐利体验系列课程(4):查询表达式LINQ(2).rar
C# 3.0 3.5 新特性 总结 最新在网上好不容易搜集的资料。
C# 3.0 入门系列 主要介绍C#3.0新增特性dlinq的学习
c#3.0入门经典教程 c#3.0入门 c#3.0
C#3.0中自动属性,新的对象初始化器,新的集合初始化器,扩展方法,推断类型等属性的总节。
C#3.0,在短短几年中,微软就对C#进行了两次大的升级,为C#加入了许多新的特性,从而使C#变得更加强大也更加现代了
介绍C# 3.0新语言特性和改进内容,帮助开发人员更了解VS2008中的C#语言
C#3.0本质论-卷一:C#基础 要更快的下载,请在如下地址下载: http://www.ppcook.com/viewthread.php?tid=317&extra=page%3D1 推荐给各位初学者
C#3.0一些新语法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
文档全面介绍了C#3.0的语言特性。以及和2.0的不同和更新的结构 内容。和大家分享。
学习设计模式的好书。 本书为那些充满奥秘的设计模式提供了有效的C#3.0实现。” 如果想加速.NET应用程序的开发,你...本书条理清晰地介绍了经典的面向对象设计模式,并解释了怎样运用最新的C#3.0语言特性来编写它们。
微软官方的c#3.0规范完全版,原来发的是c#3.0的新特征版本!
C# 3.0 锐利体验系列课程(3):查询表达式LINQ(1),学习C#3.0的新技术LING