2012-01-19 110 views
0

这里是我的代码(只是一个片段揭露问题):在私人课堂上:访问“外部班级”的成员?

public class A 
{ 
    class B 
    { 
     //private class 
    } 

    public int nb; 
} 

进出口累了,但为什么我不能进入到“NB”在我的私人类?

+0

在哪里,你是如何试图访问NB? –

+0

其中“私人课程”评论被写入,我无法访问NB –

+0

请添加代码。这样我们在黑暗中拍摄。 –

回答

3

你会需要,以访问实例成员nb A的一个实例:

public class A 
{ 
    class B 
    { 
     public B() 
     { 
      A a = new A(); 
      int nb = a.nb; 
     } 
    } 

    public int nb; 
} 
+0

也许最好让它成为'internal'? – abatishchev

+0

@abatishchev,让内部什么?嵌套类?为什么?如果这个班不打算在A以外使用,该怎么办?使它成为一个嵌套的私人类是有道理的。 –

+0

我的意思是'公众诠释nb' - >'内部整型nb' – abatishchev

3

这是可能的在Java中,但不是在C#中。

您需要将A的实例传递给B

2

在C#中的“外部”类只是一个“命名空间”的内部类。所以外部类没有被实例化。

0

您需要的A一个实例传递给B,像这样:

public class A 
{ 
    class B 
    { 
     private A _outerClass; 
     public B(A outerClass) 
     { 
      _outerClass = outerClass; 
      // Then you can access nb thus: 
      _outerClass.nb; 
     } 

    } 

    public int nb; 
}