更新:2007 年 11 月
嵌套类型是作为某其他类型的成员的类型。嵌套类型应与其声明类型紧密关联,并且不得用作通用类型。有些开发人员会将嵌套类型弄混淆,因此嵌套类型不应是公开可见的,除非不得不这样做。在设计完善的库中,开发人员几乎不需要使用嵌套类型实例化对象或声明变量。
在声明类型使用和创建嵌套类型实例时,嵌套类型很有用,但不在公共成员中公开嵌套类型的使用。
如果嵌套类型和其外部类型之间的关系需要成员可访问性语义,则要使用嵌套类型。
由于嵌套类型被视为是声明类型的成员,因此嵌套类型可以访问声明类型中的所有其他成员。
如果可能在声明类型的外部引用类型,则不要使用嵌套类型。
在常见方案中,不应要求对嵌套类型进行变量声明和对象实例化。例如,处理在某一类上定义的事件的事件处理程序委托不应嵌套在该类中。
如果需要由客户端代码实例化类型,则不要使用嵌套类型。如果某种类型具有公共构造函数,就可能不应进行嵌套。
理想情况下,嵌套类型仅由它的声明类型进行实例化和使用。如果嵌套类型具有公共构造函数,则表示该类型不单由其声明类型使用。通常情况下,嵌套类型不应针对其声明类型以外的类型执行任务。如某种类型具有更广泛的用途,就很可能不应进行嵌套。
不要将嵌套类型定义为接口的成员。许多语言不支持这样的构造。
部分版权所有 2005 Microsoft Corporation。保留所有权利。
部分版权所有 Addison-Wesley Corporation。保留所有权利。
有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(《框架设计指南:可重用 .NET 库的约定、术语和模式》)。