C#中的内部类

时间:2009-07-28 12:36:06

标签: c# nested-class

直到最近,我还没有说过普通类和内部类/子类之间存在差异。

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

4 个答案:

答案 0 :(得分:15)

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

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

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

(包含的类是Java中的一个实验性理想,每个人都喜欢,但并没有真正证明时间的考验。随着C#出现很多,它可以从Java中学到什么效果不好)

答案 1 :(得分:6)

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

您使用它们的原因是控制班级的可访问性。

答案 2 :(得分:4)

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

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

答案 3 :(得分:1)

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