设为首页 加入收藏

TOP

1.3 C# 2.0新特性概览
2013-10-07 14:04:10 来源: 作者: 【 】 浏览:65
Tags:1.3 2.0 特性 概览

1.3 C# 2.0新特性概览

自2000年末最初发布以来,C#取得了长足的发展,其发展历程因得到广泛的采用而进一步加速。随着Visual Studio 2005和.NET Framework 2.0的发布,C#编译器开始支持C# 2.0的增强功能。这是一个好消息,因为C# 2.0包括了很多方便的特性,这些特性带来更舒适的编程(www.cppentry.com)体验,也提高了效率。本节简要叙述这些新特性,并指出本书的哪些章节包括这方面的详细信息。

毫无疑问,C# 2.0最好的扩展特性是对泛型(generic)的支持。它的语法类似C++(www.cppentry.com)的模板,但二者之间的主要区别在于从.NET泛型创建的构造类型(constructed type)本质上是动态的,也就是说,它们是在运行时被绑定和构造的。这与C++(www.cppentry.com)从模板创造具体类型有区别,C++(www.cppentry.com)的这个过程是静态的,从某种程度上说是编译时绑定和构造的 。当与向量、列表、散列表等集合类型结合使用时,泛型是最有用的,它们带来的成果是最高效的。泛型可以依具体类型而不是使用所有对象的基类型System.object来处理其所包含的类型。第11章讲解泛型,第9章将讲解集合(collection)。

C# 2.0支持匿名方法。匿名方法有时也被称为lambda函数,这是函数式编程(www.cppentry.com)的术语。C#的匿名方法对委托和事件特别有用。委托和事件是用来注册回调函数的结构,这些回调方法在委托或事件触发的时候被调用。通常,可以用一个在其他地方定义好的方法。但有了匿名方法,你可以在委托或事件被构造的时候内联地定义它们的代码。这在委托只需要做有限的工作的时候特别方便,因为这种情况下定义一个完整的方法就有点小题大做了。更好的是,匿名方法体里面可以访问它的定义点所在范围内的所有变量 。匿名方法将在第10章讨论。C# 3.0新引入的lambda表达式取代了匿名方法,使代码的可读性更好。

C# 2.0支持迭代器。任何熟悉C++(www.cppentry.com)标准模板库(Standard Template Library,STL)的人都知道迭代器和它的用处。在C#里,通常可以用foreach语句来迭代一个有集合行为的对象。这个集合对象必须实现IEnumerable接口,IEnumerable包含GetEnumerator方法。在容器类型中实现GetEnumerator方法非常繁琐乏味。但是用C#迭代器,实现GetEnumerator方法就是小菜一碟。第9章将详细介绍迭代器。

最后,C# 2.0增加了对分部类型(partial type)的支持。在C# 2.0之前,必须把整个类定义在一个文件(也称为一个编译单元)里面。这个要求随着分部类型的出现而放松了。这对那些需要代码生成器来产生骨架代码的人来说是个好消息。例如,可以用Visual Studio向导生成System.Data.DataSet继承类型来访问数据库里的数据。C# 2.0之前,修改生成的代码是个问题,你必须用一个新类型继承或包含生成的类型来特化它的实现,或者必须要修改生成的代码。修改生成的代码有很大的风险,因为当出于某种原因向导重新生成代码时,所做的修改会丢掉。分部类型解决了这个问题,因为现在可以在一个单独的文件中来增强生成的代码了,这样你的修改在向导重新生成代码的时候就不会丢失。关于如何使用分部类型,你可在用Visual Studio创建Windows Forms程序时查看自动生成的代码。可以在第4章找到有关分部类型更详细的信息。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇实例028 利用Memory窗口查看内存.. 下一篇1.5 C# 4.0新特性概览

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: