1、背景
.NET Framework第一版在2002年发布。.NET Framework 2.0 在2005年发布,可以认为是该架构的一个主要版本。对于.NET Framework的每个版本,Microsoft对所开的代码尽可能少的不兼容修改。
2、新增动态类型
动态语言(JavaScrip、Python和Ruby)进步非常快,由于这类编程越来越流行,C#发布了一个新的动态类型功能。让动态语言运行库(DLR)在运行期间确定对象的类型。
使用新的Dynamic关键字访问DLR,这个关键字对于编译器是一个标记,只要遇到这个关键字,编译器就认为他是一个动态调用。
3、可选参数和命名参数
可选参数在VB中已经存在一段时间了,.NET 4中C#能够使用该特性。举例如下:
public void CreateUser(string firstName,string lastName, bool isAdmin,bool isTrialUser) { // } //使用可选参数,可以重载该方法,得到好几个方法。如下: public void CreateUser(string firstName,string lastName, bool isAdmin = false,bool isTrialUser = false) { } //可以使用以下几个方法 CreateUser("xie","yao"); CreateUser("xie","yao",false); CreateUser("xie","yao",true,true); //使用了命名参数,isTrialUser,使得代码看起来更加直观 CreateUser("xie","yao",isTrialUser: false);
命名参数:
system.IO命名空间
File.Copy(@"c:xxxxxxxx",@"d:xxxxxxxx",true); //以上代码不直观,不知道参数的意义 //使用命名参数,很容易阅读和理解这行代码,对编译没有影响 File.Copy(sourceFileName:@"c:xxxxxxxx",destFileName:@"d:xxxxxxxx",overwrite:true);
4、协变和抗变
以前版本中,可以对对象和数组使用抗变,但是不能对泛型接口使用抗变。
而在.NET 4中可以对泛型接口使用抗变。
参考:C#高级编程 清华大学出版社