2012-08-14 6 views
-2

액세스 수정 자에 문제가 있습니다. 나는 또한 this URL을 보았지만이 질문에 직면 한 이유는 다음 코드가 BaseClass의 멤버를 인식하지 못하는 이유는 무엇입니까?C#의 내부 액세스 한정자 정보

namespace Project1 
{ 
    internal class BaseClass 
    { 
     public static int intM = 0; 
    } 
} 


namespace Project1 
{ 
    class TestAccess 
    { 
     static void Main() 
     { 
      BaseClass myBase = new BaseClass(); 
      Console.WriteLine(myBase.intM); 

     } 
    } 
} 
+0

시스템 사용 중 있습니까? 성명서? – Freeman

+0

문제와 함께 제공되는 오류 메시지가 있습니다. 읽어 봤니? – Jon

답변

6

정적이지만 외관상으로는 문제가되지 않습니다. 클래스 멤버가 정적이며 인스턴스를 통해 클래스 멤버에 액세스하려고합니다.

2

컴파일러에서 "정적 멤버가 아닌 정적 컨텍스트에서 정적 멤버에 액세스 할 수 없습니다."라는 문구가 표시 될 수 있습니다. 문제는 intM이 정적으로 정의된다는 것입니다. 기본적으로 클래스 자체에 속하며 인스턴스에 속하지 않으며 인스턴스에 속한 것처럼 액세스 할 수 없습니다. 다음과 같이이 멤버에 대신 액세스 할 수 있습니다.

Console.WriteLine(BaseClass.intM); 

이렇게하려면 BaseClass 인스턴스를 만들 필요조차 없습니다.

+0

감사합니다. ** 멤버 'Project1.BaseClass.intM'은 인스턴스 참조로 액세스 할 수 없습니다. 형식 이름 대신 \t으로 한정 ** 거기에 정적 키워드를 어떻게 알리지 않았는지 전혀 알지 못합니다. 이것은 내 코드가 아니지만 MSDN에서 찾은 예제입니다. –