首页 > 编程开发 > Objective-C编程 >
-
C#3.0新特性之隐含类型局部变量和匿名类型
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();
我们可以把更多的时间用在软件功能的实现上而不是敲代码上。