티스토리 뷰

반응형

internal 키워드는 형식 및 형식 멤버에 대한 액세스 한정자입니다.

이 페이지에서는 internal 액세스 합니다. internal 키워드 이기도의 일부로 protected internal 액세스 한정자입니다.

내부 형식 또는 멤버는 다음 예제와 같이 동일한 어셈블리의 파일 내에서만 액세스할 수 있습니다.

public class BaseClass   
{  
    // Only accessible within the same assembly  
    internal static int x = 0;  
}  

internal 및 다른 액세스 한정자와 비교는 액세스 가능성 수준  액세스 한정자를 참조하세요.

어셈블리에 대한 자세한 내용은 어셈블리 및 전역 어셈블리 캐시를 참조하세요.

내부 액세스는 구성 요소 그룹이 나머지 응용 프로그램 코드에 노출되지 않고 비공개 방식으로 상호 작용할 수 있도록 하기 때문에 일반적으로 구성 요소 기반 개발에 사용됩니다. 예를 들어 그래픽 사용자 인터페이스를 빌드하기 위한 프레임워크는 내부 액세스로 멤버를 사용하여 상호 작용하는 Control  Form 클래스를 제공할 수 있습니다. 이러한 멤버는 internal이므로 프레임워크를 사용하는 코드에 노출되지 않습니다.

정의 시 사용된 어셈블리 외부에서 내부 액세스로 형식 또는 멤버를 참조하면 오류가 발생합니다.

예제

이 예제에는 Assembly1.cs  Assembly1_a.cs의 두 파일이 포함되어 있습니다. 첫 번째 파일에는 내부 기본 클래스인 BaseClass가 포함되어 있습니다. 두 번째 파일에서 BaseClass를 인스턴스화하려고 하면 오류가 발생합니다.

// Assembly1.cs  
// Compile with: /target:library  
internal class BaseClass   
{  
   public static int intM = 0;  
}  
// Assembly1_a.cs  
// Compile with: /reference:Assembly1.dll  
class TestAccess   
{  
   static void Main()   
   {  
      BaseClass myBase = new BaseClass();   // CS0122  
   }  
}  

예제

이 예제에서는 예제 1에서 사용한 것과 동일한 파일을 사용하고 BaseClass의 액세스 가능성 수준을 public으로 변경합니다. 또한 IntM 멤버의 액세스 가능성 수준을 internal로 변경합니다. 이 경우 클래스를 인스턴스화할 수 있지만 내부 멤버에는 액세스할 수 없습니다.

// Assembly2.cs  
// Compile with: /target:library  
public class BaseClass   
{  
   internal static int intM = 0;  
}  
// Assembly2_a.cs  
// Compile with: /reference:Assembly1.dll  
public class TestAccess   
{  
   static void Main()   
   {  
      BaseClass myBase = new BaseClass();   // Ok.  
      BaseClass.intM = 444;    // CS0117  
   }  
}  



반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함