2012-01-19 2 views
0

내 코드 (스 니펫 문제를 노출하는)입니다 :개인 교실 : "외부 교실"회원에 대한 액세스? 여기

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

    public int nb; 
} 

임 피곤하지만 나는 내 개인 수업에 "주의"를 액세스 할 수없는 이유는 무엇입니까?

+0

와 방법 NB에 액세스하려고? –

+0

"개인 클래스"주석이 작성된 곳에서 nb에 액세스 할 수 없습니다 –

+0

코드를 추가하십시오. 이 방법으로 우리는 어둠 속에서 총격을 가하고 있습니다. –

답변

3

는 인스턴스 멤버 nb에 액세스하기 위해 인스턴스가 필요합니다. 따라서 외부 클래스가 인스턴스화되지 않습니다.

+0

더 나은 '내부'를 만들 수 있을까요? – abatishchev

+0

@abatishchev, 내부를 어떻게 만드나요? 중첩 된 클래스? 왜? 이 클래스가 A의 외부에서 사용되도록 의도되지 않은 경우 어떻게해야합니까? 중첩 된 개인 클래스를 만드는 것이 합리적입니다. –

+0

'public int nb' ->'int int nb' – abatishchev

3

자바에서는 가능하지만 C#에서는 가능하지 않습니다.

A의 인스턴스를 B으로 전달해야합니다. C#에서

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

    public int nb; 
} 
2

에 '외부'클래스는 내부 클래스에 단지 '네임 스페이스'입니다 : 당신은 거 야

0
당신과 같이, BA의 인스턴스를 전달해야

:

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; 
}