C# 3.0新增了很多内容,这里对一些重点的特性进行讲解,为大家更好的学习VS2008奠定基础。新内容包括:自动属性、类初始化器、集合初始化器、扩展方法、推断类型与匿名类等。这里是为大家以后学期Linq做技术铺垫,所以锁定了上述的内容。
1、自动属性
以前类的定义是这样:
现在类的定义可以是:
自动属性的典型适用场合:
a、在属性代码中只包含基本的赋值取值功能
b、简单的实体类
自动属性不能实现只读或者只写属性
因为没有声明私有变量,在使用自动属性时只能直接使用属性名进行引用
2、对象初始化器
以往初始化的方式:
先在的方式:
新的方式可以让初始化对象更方便。
初始化是可以嵌套的
3、扩展方法
简单理解就是为某类增加一个功能(方法),前提是不修改原始类代码,不需要继承原始类。
扩展方法是个很好的功能,它可以实现上面的要求。
实现如下:
首先定义一个静态类,其中包含一个静态方法,对哪个类进行扩充就将此类放在第一个参数,前面必须加this。
如果此方法有参数,就在后面加上并用逗号隔开。
调用的时候会发现:
string str = "";
str.ToUpperNew(); --新增方法。
4、推断类型
var是C# 3.0 引入的一个新关键字,它可以根据初始值自动推断局部变量的类型。
var 和 JavaScript 中的 var 的区别:
事实上伴随 var 关键字引入的是一种叫做 “Implicitly Typed Local Variables” 的机制,
即“暗示类型局部变量” 注意在这里它清晰地表明 var 修饰的是一个局部变量,
所以虽然我们后面有时称呼它为“推断类型”但实际上它不是一种“类型” 而是“可以推断类型的局部变量”。
var a = 2010;
var b = "Name";
var c = 11.0;
var 和 object 的区别:
var name = "temp";
name = 1900;
此代码在编译时出错!
object name = "temp";
name = 1111;
此编译时是通过的!
5、匿名类
var emp = new {
Id = 1,
Name = "temp"
};
匿名类和var一起使用,由于没有类名,所以类型就使用var类型。
在使用时是 emp.Id或emp.Name来获取。
这个匿名类在Linq中很常见。