我有ClassB,它嵌套在ClassA中。在ClassA中,我有一个名为_MyId的变量...如何从ClassB访问_MyId?
提前致谢!
答案 0 :(得分:5)
简而言之,您需要ClassA
内的实例ClassB
的引用。
C#的嵌套类与Java的工作方式不同,如果这是你习惯的。当应用于嵌套类型时,最接近的模拟是Java static class
(意味着C#的嵌套类不与外部类的特定实例关联)。
换句话说,与外部类相比,C#的嵌套类不是“特殊的”,除了它们可以看到外部类的私有成员。尽管如此,您仍然需要引用外部类才能访问它们。
答案 1 :(得分:2)
在ClassB的构造函数中传递一个A类的实例。
答案 2 :(得分:2)
如果该字段为static
,您只需将其称为ClassA._MyId
即可。如果不是,则应使用classAInstance._MyId
,其中classAInstance
是ClassA
的实例。
如果您来自Java背景,您应该注意C#中的嵌套类与Java中的 static 嵌套类类似。
答案 3 :(得分:1)
您必须引用ClassA
的特定实例才能检索成员。如果您的实例名为foo
,请使用foo._MyId
。
答案 4 :(得分:1)
如果_MyId是静态的,您可以通过它的名称或ClassA._MyId访问它。
但是否则你首先需要ClassA的实例,并且与来自另一个类(不是嵌套的)的access几乎没有区别。但ClassB的成员确实可以访问ClassA的私人成员。
说明:嵌套类是2种类型之间的静态关系,实例之间没有隐式关系。您必须将引用传递给它们之间的对象,就像这些类没有嵌套一样。