嵌套类的原因是什么?

时间:2009-04-18 15:59:38

标签: c# oop

我一直在谷歌上寻找可能在嵌套课程中获得的优势。关于如何做到这一点有很多例子,但我没有找到在另一个内部声明一个类的原因。我甚至咨询了我刚刚到达的“Code Complete”,但也没有提到。我可以看到它更难阅读的缺点。

6 个答案:

答案 0 :(得分:11)

通常,嵌套类只是为了支持其容器类的功能,并且它本身没有可行性。例如,它可以用于收集大量参数用于初始化,从而保持主类的构造函数可管理;或者它可以继承以定义支持主类的专用集合。

从语义上讲,单独的类没有区别,但是嵌套会发出一个明确的消息,即该类不能单独使用。

答案 1 :(得分:2)

有几个设计决策以制作嵌套类结束:

  • 你想让两个班级之间的关系更加明确;一个 。 name更明确地表示同一名称空间中的两个类
  • 依赖于上下文的类作为上下文服务类所包含的顶级嵌套类使得这种依赖性更加清晰“这些事情变得越来越重要”
  • 避免命名空间污染
  • 减少了源文件的数量

所以嵌套类背后有两个原则:依赖更好的组织

答案 2 :(得分:0)

使用它们,如果父类需要一些模型才能工作,而不是所有其他类。所以一些数据的内部表示/帮助。

答案 3 :(得分:0)

我通常使用它们声明为私有,因此它们可以用于仅在外部类中需要的一些功能,保持名称空间不需要的辅助类。

答案 4 :(得分:0)

从我的角度来看,嵌套类不是强制性的。我通常只在它只是一个小对象时才嵌套一个类,只与一个特定的类相关。

答案 5 :(得分:0)

您可以使用嵌套类来模拟外部类实现中涉及的概念,但是与外部类密切相关,以至于嵌套类在任何其他上下文中使用都没有意义。嵌套类具有可见性,并且可以明确地依赖于不属于其公共API的外部类的细节。

一种常见模式是嵌套类实现公共接口,外部类通过返回类型为公共接口的方法公开嵌套类的实例。迭代器模式就是其中的一个例子。