1.4 C# 3.0新特性概览

2013-10-07 14:04:05 · 作者: · 浏览: 67

1.4 C# 3.0新特性概览

C# 3.0包括一些很好的新特性。这些新特性大都是支持语言集成查询(Language Integrated Query,LINQ)的基石。然而,即使在LINQ的范围外单独使用,它们也非常有用。许多特性使程序员使用函数式编程(www.cppentry.com)技术更容易。

通过使用新的关键字var,C#现在支持隐式的类型化局部变量。需要注意的是,这些变量不是无类型的,它们的类型是编译时推断出的。这点将在第3章介绍。

你是否曾想创建一个简单类型来保存有关数据,但又烦恼于需要创建整个新类?在很多情况下,新的匿名类型会帮你减轻这个负担。使用匿名类型可以在一个复合语句中定义并实例化一个类型。匿名类型将在第4章进行介绍。

自动实现的属性(auto-implemented property)是另一个有用的新特性,它为我们省去了打字的麻烦,减少了引入bug的可能性。多少次你曾为保存一点数据而声明一个类,然后疲于为这些数据创建属性访问函数?毕竟,这样做符合良好封装的实践要求。谢天谢地,自动实现的属性极大地减少了定义属性所需的输入量。第4章将介绍自动实现属性的技术细节。

当我们讨论方便这个主题的时候,C# 3.0还引入了两个新特性来帮助我们实例化和初始化对象实例。使用对象和集合初始化器,可以在一个组合语句中实例化或初始化一个对象或集合。对象初始化器将在第4章介绍,集合初始化器将在第9章介绍。

C# 2.0引入了分部类定义来方便使用代码生成器。C# 3.0进一步引入了分部方法。使用分部方法,代码生成器可以声明一个方法签名,生成代码的使用者,也就是创建分部类定义剩下那部分的人,可以选择是否实现这个方法。分部方法将在第4章介绍。

扩展方法(extension method)是最激动人心的新特性之一。从表面上看,它们不过是可以像实例方法那样调用的静态方法。它们对操作于其上的实例没有任何的特别访问权,从这个方面来说,它们就像静态方法。然而,它的语法允许我们用一种函数式的方式来编程(www.cppentry.com),通常这样会产生更清晰更可读的代码。第14章将专门介绍扩展方法以及我们能用它来做什么。

比扩展方法更引人注目的是对lambda表达式的支持。lambda表达式取代了匿名方法,也就是说,如果C# 2.0里面有lambda表达式,匿名方法就没有必要了。然而,lambda表达式的功能比匿名方法更多,因为它们可以被转换成代理或表达式树。lambda表达式将在第15章介绍。

所有C# 3.0新特性的鼻祖是LINQ,因为LINQ正是构建在所有这些新特性之上,尤其是扩展方法、lambda表达式和匿名类型。它还增加了一些新的语言关键字让我们编写直观的查询语句,以此无缝地连接起面向对象世界和数据世界。可以用LINQ从多个来源访问数据。Visual Studio提供了在本地对象集合、SQL数据存储和XML上使用LINQ的能力。微软和第三方厂商很快会提供许多其他的数据源。例如,可以使用LINQ连接到Windows管理台(Windows Management Instrumentation,WMI)、文档对象模型(Document Object Model,DOM)和Web。另外,还有人开发的系统使用LINQ来连接到流行的网站,如Google和Flickr。第16章将专门介绍LINQ。