从嵌套类到包含类的C#成员访问

时间:2010-03-03 16:36:08

标签: c#

我有ClassB,它嵌套在ClassA中。在ClassA中,我有一个名为_MyId的变量...如何从ClassB访问_MyId?

提前致谢!

5 个答案:

答案 0 :(得分:5)

简而言之,您需要ClassA内的实例ClassB的引用。

C#的嵌套类与Java的工作方式不同,如果这是你习惯的。当应用于嵌套类型时,最接近的模拟是Java static class(意味着C#的嵌套类与外部类的特定实例关联)。

换句话说,与外部类相比,C#的嵌套类不是“特殊的”,除了它们可以看到外部类的私有成员。尽管如此,您仍然需要引用外部类才能访问它们。

答案 1 :(得分:2)

在ClassB的构造函数中传递一个A类的实例。

答案 2 :(得分:2)

如果该字段为static,您只需将其称为ClassA._MyId即可。如果不是,则应使用classAInstance._MyId,其中classAInstanceClassA的实例。

如果您来自Java背景,您应该注意C#中的嵌套类与Java中的 static 嵌套类类似。

答案 3 :(得分:1)

您必须引用ClassA的特定实例才能检索成员。如果您的实例名为foo,请使用foo._MyId

答案 4 :(得分:1)

如果_MyId是静态的,您可以通过它的名称或ClassA._MyId访问它。

但是否则你首先需要ClassA的实例,并且与来自另一个类(不是嵌套的)的access几乎没有区别。但ClassB的成员确实可以访问ClassA的私人成员。

说明:嵌套类是2种类型之间的静态关系,实例之间没有隐式关系。您必须将引用传递给它们之间的对象,就像这些类没有嵌套一样。