【问题标题】:Inner classes in C#C#中的内部类
【发布时间】:2025-11-21 13:35:01
【问题描述】:

直到最近我才知道普通类和内部类/子类之间存在区别。

内部类的实例与其包含类的实例之间的关系是什么,内部类的目的是什么/是什么让它们不同?

【问题讨论】:

    标签: c# nested-class


    【解决方案1】:

    与 Java 不同,C# - 包含的类是嵌套的。包含类实例和包含类的实例之间没有关系。包含类仅在 C# 中用于控制包含类的可访问性并避免污染命名空间。

    (有些公司有一个编码标准,每个类都必须放入自己的文件中,包含类是小类的一种方式。)

    在 Java 中,内部类的实例(对象)具有指向外部类的指针。这是在 Java 中完成的,因为它使用许多小类来处理事件等。C# 对此有委托。

    (包含类是 Java 中的实验理想之一,每个人都喜欢,但并没有真正证明时间的考验。随着 C# 的出现很晚,它可以从 Java 中吸取教训)

    【讨论】:

      【解决方案2】:

      .NET 没有像 Java 那样的内部类。它确实有嵌套类。

      您使用它们的原因是为了控制类的可访问性。

      【讨论】:

        【解决方案3】:

        在 C# 中,常规类和内部类之间至少有 3 个区别,它们也可以形成内部类和包含它的外部类之间的关系。

        • 内部类可以声明为受保护、内部、受保护内部或私有,而普通类不能。
        • 内部类可以访问包含外部类的静态成员,而无需使用该类的名称。
        • 当内部类访问外部类的实例时,它可以访问该对象的私有成员,即使它们不是静态的。

        【讨论】:

          【解决方案4】:

          C# - 包含的类是嵌套的。包含类实例和被包含类的实例之间没有关系。

          【讨论】:

            最近更新 更多