1.1.5 C# 2.0新增功能
随着C# 2.0的发布,C#又为开发人员提供了表1-2中的新功能。
表1-2 C# 2.0新增功能
|
功能 |
描述 |
|
泛型 |
C# 2.0中添加了一些泛型类型。使开发人员能够实现程度很高的代码重用,获得更高的集合类性能。泛型类型只存在 arity 上的不同。也可以将参数强制为特定的类型。 |
|
迭代器 |
迭代器使得规定 foreach 循环将如何循环访问集合的内容变得更加容易。 |
|
分部类 |
分部类型定义允许将单个类(比如某个类)拆分为多个文件。Visual Studio 2005窗体设计器使用此功能将它生成的代码与用户代码分离。 |
|
可空类型 |
可空类型允许变量包含未定义的值。在使用数据库和其他可能包含未含有具体值的元素的数据结构时,可以使用可空类型。 |
|
匿名方法 |
可以将代码块作为参数来传递。在本应使用委托的任何地方,都可以使用代码块来取代,不需要定义新的方法。 |
|
命名空间别名限定符 |
命名空间别名限定符(::)对访问命名空间成员提供了更多控制。global::别名允许访问可能被代码中的实体隐藏的根命名空间。 |
|
静态类 |
若要声明那些包含不能实例化的静态方法的类,静态类就是一种安全而便利的方式。C# 1.2版要求将类构造函数定义为私有的,以防止类被实例化。 |
|
外部程序集别名 |
通过 extern 关键字的这种扩展用法引用包含在同一程序集中的同一组件的不同版本。 |
|
属性访问器可访问性 |
可以为属性的 get 和 set 访问器定义不同级别的可访问性。 |
|
委托中的协变和逆变 |
传递给委托的方法在返回类型和参数方面可以具有更大的灵活性。 |
|
声明、实例化和使用委托 |
方法组转换为声明委托提供了一种更简单的语法。 |
|
固定大小的缓冲区 |
在不安全的代码块中,可以声明包含嵌入数组的固定大小结构。 |
|
友元程序集 |
程序集可以提供对其他程序集的非公共类型的访问。 |
|
内联警告控制 |
#pragma 警告指令可用于禁用和启用某些编译器警告。 |
|
volatile |
volatile 关键字应用于IntPtr和UIntPtr。 |
编译器的新增功能和更改内容如表1-3所示。
表1-3 编译器的新增功能和更改内容
|
功能 |
描述 |
|
/errorreport选项 |
可用于通过Internet向Microsoft报告内部编译器错误。 |
|
/incremental选项 |
已移除。 |
|
/keycontainer和/keyfile选项 |
支持指定加密密钥。 |
|
/langversion选项 |
可用于指定与特定语言版本的兼容性。 |
|
/linkresource选项 |
包含附加选项。 |
|
/moduleassemblyname选项 |
可以生成.netmodule文件并访问现有程序集中的非公共类型。 |
|
/pdb选项 |
指定.pdb文件的名称和位置。 |
|
/platform选项 |
可将Itanium系列(IPF)和x64结构作为目标平台。 |
|
#pragma warning |
用于在代码中禁用或启用单个警告。 |
通过前面的了解,可以看出C#可以实现大多数程序员需要的功能。应用C#,可以进行Windows应用程序、Windows控件库、Web应用程序、Windows服务、Web服务、报表应用程序、Office等开发。同时,C#还具有大多数程序员所需要的特性:功能强大、语法简单、文档齐全、支持良好。
通过学习,读者还可以不断的领略到C#的魅力。这里就不一一列举选用C#的理由了。在本书以后的内容中读者将逐渐感受到C#的优点。






