何时在C#中使用嵌套类?

4

想知道在C#中何时使用嵌套类是正确的? 我们是否有不合理使用它的情况,因此不正确?

如果您可以为这两种情况提供示例 谢谢


您有嵌套类的示例吗?链接? - m.edmondson
6个回答

8

当您需要封装主要在父类中使用的数据格式时,使用嵌套类非常方便。这通常是因为数据的目的或格式对于父类来说非常特定,不适合在解决方案中被广泛使用。


2

这里是关于嵌套类的简单基础介绍。

嵌套类


1

C# 没有一种方法可以编写一个 using 指令来针对一个类,以便可以访问该类的静态成员而不必将类名作为限定符(与 Java 的 import static 相比,后者允许这样做)。

因此,对于您的类的用户来说,如果您将任何公共类作为命名空间的直接成员而不是嵌套在其他公共类中,则会更加方便。这样他们就可以使用 using 指令将它们拉入全局命名空间。

对于私有类,可以随意放置,最好将它们放在使用它们的地方附近,以增强代码的可读性。


0

我不确定我的世界是否有足够的空间来容纳嵌套类。它只会让设计变得模糊。如果你需要隐藏类内部的信息,为什么不只是将其存储在成员变量中呢?

此外,如果没有能力在类的位置注入存根,测试将变得更加麻烦。


因为你需要封装的不仅仅是数据,否则结构体就足够了。如果你有一个汽车类,嵌套的类是引擎,那么引擎需要有"Start()"等函数。 - Brian Scott
@Brian,但是为什么您不认为Engine是一个普通的独立类(它也恰好是Car的属性)?我可能很蠢,但我从未遇到过需要嵌套类的情况。我通常使用Engine作为属性或让Car实现IEngine接口来解决问题。我知道在某些情况下信息隐藏是必要的,但我个人没有遇到过这些情况 :-) - Morten
当然,引擎内部的情况取决于您的应用程序的范围/上下文,任何嵌套类的实现都可以说是个人偏好。 - Brian Scott

0

嵌套类的使用取决于以下情况:

1)将代码组织成现实世界中两个对象之间存在特殊关系的情况。

2)将一个类隐藏在另一个类中,以便您不希望从创建它的类之外使用内部类。

假设您有两个名为A和B的类,类B依赖于类A,没有类A,您无法在该场景中使用类B,则可以使用嵌套类。

据我所知

DataRow类是DataTable的嵌套类,即除非声明DataTable类的对象,否则无法创建DataRow类。


0

我发现有两个主要原因:

  1. 个性化类名而不破坏其意义。
    例如:Vercas.ExplorerView,其中我个性化了类名,而不会破坏其含义。

  2. 私有类。
    例如:Vercas.ExplorerView.Item 仅在 Vercas.ExplorerView 内部使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接