嵌套类型

嵌套类型是作为某其他类型的成员的类型。 嵌套类型应与其声明类型紧密关联,并且不得用作通用类型。 有些开发人员会将嵌套类型弄混淆,因此嵌套类型不应是公开可见的,除非不得不这样做。 在设计完善的库中,开发人员几乎不需要使用嵌套类型实例化对象或声明变量。

在声明类型使用和创建嵌套类型实例时,嵌套类型很有用,但不在公共成员中公开嵌套类型的使用。

如果嵌套类型和其外部类型之间的关系需要成员可访问性语义,则要使用嵌套类型。

由于嵌套类型被视为是声明类型的成员,因此嵌套类型可以访问声明类型中的所有其他成员。

不要将公共嵌套类型用作逻辑分组构造;请改用命名空间。

避免公开显露嵌套类型。 唯一的特例是需要声明嵌套类型的变量的情况,在生成子类或其他高级自定义等极少数情况下需要声明嵌套类型的变量。

如果可能在声明类型的外部引用类型,则不要使用嵌套类型。

在常见方案中,不应要求对嵌套类型进行变量声明和对象实例化。 例如,处理在某一类上定义的事件的事件处理程序委托不应嵌套在该类中。

如果需要由客户端代码实例化类型,则不要使用嵌套类型。 如果某种类型具有公共构造函数,就可能不应进行嵌套。

理想情况下,嵌套类型仅由它的声明类型进行实例化和使用。 如果嵌套类型具有公共构造函数,则表示该类型不单由其声明类型使用。 通常情况下,嵌套类型不应针对其声明类型以外的类型执行任务。 如某种类型具有更广泛的用途,就很可能不应进行嵌套。

不要将嵌套类型定义为接口的成员。 许多语言不支持这样的构造。

部分版权所有 2005 Microsoft Corporation。 保留所有权利。

部分版权所有 Addison-Wesley Corporation。 保留所有权利。

设计指引的详细信息,请参阅"框架设计准则: 公约、 成语和可重复使用的模式。网络图书馆"书 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 韦斯利,发表。

请参见

概念

类型和命名空间

其他资源

类型设计准则

类库开发的设计准则