C#3.0支持了许多新功能,这让一些常用语法在定义的时候更加精简方便,同时有些新功能的推出是为了配合LINQ查询技术。以下是C#3.0的8大新功能,包括:
- 隐式类型区域变量及数组声明
- 对象初始化设置
- 集合初始化设置
- 匿名类型
- Lambda表达式
- 扩展方法
- 自动属性实现
- 部分方法定义
1.隐式类型区域变量及数组声明。
C#3.0推出了一种新的var声明语法,叫做隐式声明,就像传统的Javascript以var声明变量一样。
var age=20 //声明年龄为30,为number数值类型
var name="Mark" //声明名字为Mark,为string字符串类型
var类型的出现,是为了配合在声明LINQ或匿名类型语法时,并无法事先知道类型,或者知道了也没用,var所声明的变量或对象,必须跟随LINQ或匿名类型语法声明而动态变换类型。
1.1隐式声明变量。
例1:
protected void Page_Load(Object sender, EventArgs e)
{
var a = 10;
var b = 5;
var c = a + b;
Response.Write(c);
}
执行的结果是15,说明正确执行。但不可在1.0或者2.0的环境中使用。
1.2隐式声明数组。
//传统声明
int[] arrayInt = new int[5] { 100, 200, 300, 400, 500 };
string[] arrayStr = new string[4] { "May", "Bob", "John", "Mark" };
//隐式声明
var ImplicitlyArrayInt = new[] { 100, 200, 300, 400, 500 };
var ImplicitlyArrayStr = new[] { "May", "Bob", "John", "Mark" };
例2:
2.对象初始化设置。
2.1 类对象初始化
在对象初始化中,需要定义构造函数才可以进行带参数的初始化。而如果遇到多个属性,就要建立多个初始化函数(重载)。可是这样一来,反倒成了累赘。于是C#3.0就有了新的初始化机制。
比如现在定义了一个person类。
那么我在初始化的时候,并不用特意创建构造函数。
从而省去了繁琐的创建构造函数机制,可使对象在初始化时直接定义属性。
2.2 List集合
3.自动属性的实现
倘若在属性中没有逻辑判断,那么可以用自动属性的实现来代替传统C#2.0的声明。
如果属性中有逻辑判断,无法用自动属性来代替。