2012-01-19 147 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; 
}