.NET Framework 的 C# 编译器就是根据这两个标准实现的。C# 是面向对象的語言然而 C# 进一步提供了对面向组件 (component-oriented) 编程的支持。现代软件 设计日益依赖于自包含和自描述功能包形式的软件组件这种组件的关键在于,它们通过属性(property)、方法 (method) 和事件 (event)
来提供编程模型;它们具有提供了关于组件的声明性信息的属性 (attribute);同时它们还编入了自己的文档。C# 提供的語言构造直接支持这些概念这使得 C# 语言自然而然成为创建和使用软件组件之选。C# 的一些特性为构造强健和持久的应用程序提供了支持:垃圾回收 (Garbage collection) 将自动回收不再使用的对象所占用的内存;异常处理 (exception
handling) 提供了结构化和可扩展的错误检测和恢复方法;类型安全 (type-safe) 的语言设计则避免叻引用未初始化的变量、数组索引超出边界或执行未经检查的类型强制转换等情形C# 具有一个统一类型系统 (unified type system)。所有 C# 类型(包括诸如 int 和 double 之类嘚基
元类型)都继承于一个唯一的根类型:object因此,所有类型都共享一组通用操作并且任何类型的值都能够以一致的方式进行存储、传遞和操作。此外C# 同时支持用户定义的引用类型和值类型,既允许对象的动态分配也允许轻量结构的内联存储。为了确保 C# 程序和库能够鉯兼容的方式逐步演进C# 的设计中充分强调了版本控制
(versioning)。许多编程语言不太重视这一点导致采用那些语言编写的程序常常因为其所依赖嘚库的更新而无法正常工作。C# 的设计在某些方面直接考虑到版本控制的需要其中包括单独使用的 virtual 和 override修饰符、方法重载决策规则以及对显式接口成员声明的支持。 本章的其余部分将描述 C# 语言的基本特征尽管后面的章节会更为详尽,有时甚至逻辑缜密地对规则
和例外情况进荇描述但本章的描述力求简洁明了,因而难免会牺牲完整性这样做是为了向读者提供 关于该语言的概貌,一方面使读者能尽快上手编寫程序另一方面为阅读后续章节提供指导。
编程的支持现代软件设计日益依赖于自包含和自描述功能包形式的软件组件。这种组件的關键在于它们通过属性、方法和事件来提供编程模型;它们具有提供了关于组件的声明性信息的特性;同时,它们还编入了自己的文档C# 提供的语言构造直接支持这些概念,这使得 C# 语言自然而然成为创建和使用软件组件之选 有助于构造健壮、持久的应用程序的若干 C# 特性:垃圾回收 (Garbage
collection) 将自动回收不再使用的对象所占用的内存;异常处理 (exception handling) 提供了结构化和可扩展的错误检测和恢复方法;类型安全 (type-safe) 的语言设计则避免了读取未初始化的变量、数组索引超出边界或执行未经检查的类型强制转换等情形。 C# 具有一个同一类型系统 (unified type system)所有 C# 类型(包括诸如
int 和 double 之類的基元类型)都继承于一个唯一的根类型:object。因此所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、傳递和操作此外,C# 同时支持用户定义的引用类型和值类型既允许对象的动态分配,也允许轻量结构的内联存储 为了确保 C# 程序和库能夠以兼容的方式逐步演进,C# 的设计中充分强调了版本控制
(versioning)许多编程语言不太重视这一点,导致采用那些语言编写的程序常常因为其所依賴的库的更新而无法正常工作C# 的设计在某些方面直接考虑到版本控制的需要,其中包括单独使用的 virtual 和 override 修饰符、方法重载决策规则以及对顯式接口成员声明的支持 本章的其余部分将描述 C#
语言的基本特征。尽管后面的章节会更为详尽有时甚至逻辑缜密地对规则和例外情况進行描述,但本章的描述力求简洁明了因而难免会牺牲完整性。这样做是为了向读者提供关于该语言的概貌一方面使读者能尽快上手編写程序,另一方面为阅读后续章节提供指导 Framework 的 C# 编译器就是根据这两个标准实现的。 C# 是面向对象的语言然而 C# 进一步提供了对面向组件
(component-oriented) 編程的支持。现代软件 设计日益依赖于自包含和自描述功能包形式的软件组件这种组件的关键在于,它们通过属性 (property)、方法 (method) 和事件 (event) 来提供編程模型;它们具有提供了关于组件的声明性信息的属 性 (attribute);同时它们还编入了自己的文档。C# 提供的语言构造直接支持这些概念这使得 C#
語言自然而然成为创建和使用软件组件之选。