当前位置: 首页 > 编程语言 > C# > 正文

C#3.0新特性――隐含类型局部变量和匿名类型

时间:2010-07-27 cnblogs 真的骄傲

C#3.0引进新关键字var,它是一个类型,可以用来声明局部变量。

Code
var I = 1; //int类型
var j = ”reallypride”; //string类型
var k = new[] { 1, 2, 3, 4 }; //int[]类型
var x; //错误,必须初始化
var y = null; //错误,不可以为空

使用var变量要点:

1.使用var声明局部变量,编译器会根据后面的初始化表达式自动推断变量的类型,这个类型是强类型。

2.var变量在声明时必须初始化,不可以为空,且编译时可以推断其类型。初始化后变量只能保存这种类型。

3.数组也可以作为var类型。

匿名类型

匿名类型允许定义行内类型,不须显示声明类型。常和var一起使用。如

Code
var p1 = new { name = ”reallypride”, age = 23 };
var p2 = new { name = “jingxuan”, age = 23 };

编译器会自动定义一个包含name和age属性的类。p1和p2结构相同,是同一个类的实例。我们再定义一个变量:

Code
var p3 = new { age = 23, name = “reallypride” };

编译器会新建一个新的类,也就是p3和p1,p2不是同一个类的实例,因为p3声明属性的位置不相同。

{ }是匿名初始化器。

如果要定义数组,可以这样定义:

Code
var intArray = new[] { 1, 2, 3, 4 };
var strArray = new[] { “a”, “b”, “c” };
var someTypeArray = new[] { new { name = “reallypride”, age = 23 }, new { name = “jingxuan”, age = 23 } };

匿名类型要点:

1.可以使用new关键字调用匿名初始化器创建一个匿名类型。

2.匿名类型直接继承自System.Object。

3.匿名类型的属性是编译器根据初始化器自动推断。

或许有人会觉得,有了var这个关键字后,其它的类型关键字都变成多余的了。

其实var是简化了我们的编程,让我们不用再因为定义一个变量而需要写两次它的类型。

如定义一个User类的实例,以前的方法我们要这样定义:

Code
User user=new User();

而现在我们可以这样定义:

Code
var user=new User();

我们可以把更多的时间用在软件功能的实现上而不是敲代码上。