C# 접근 제어자 Internal?

최 소 금·2024년 11월 12일
0

Internal라는 건 액세스 한정자이다.

앞서 설명하기 전에 설명이 필요한 단어있다.


어셈블리(Assembly)
.NET 기반 애플리케이션에 대한 배포, 버전 제어, 재사용 등 프로그램의 기본 단위이다.

어셈블리(Assembly)는 함께 작동하고 논리적 기능 단위를 형성하도록 빌드된 형식 및 리소스 모음이다.

어셈블리?
빌드 시 생성되는 dll과 .exe파일이고 보면 된다.
여러 어셈블리를 상황에 맞게 파일을 병합을 하여 리소스 관리를 할 수 있는 프로그램의 기본 단위라고 정의할 수 있다.\


Internal Class

  • 하나의 어셈블리 단위 내에서만 접근을 허용

    Internal의 접근 권한을 가진 멤버는 같은 어셈블리 코드에서만 사용할 수 있다.
    즉 동일한 어셈블리 내에선 public, 다른 어셈블리에선 private로 취급

예시 1

Assembly1.cs에서 내부 기본 클래스인 BaseClass가 포함되어 있다.
Aseembly1_a.cs에서 BaseClass를 인스턴스화하려고 하면 오류가 발생할 것이다.

//Assembly1.cs
internal class BaseClass
{
	public static int intM = 0;
}
//Aseembly1_a.cs
class TestAccess
{
	static void Main()
   {  
      var myBase = new BaseClass();   // CS0122  
   }  
}

예시 2

BaseClass의 액세스 가능성 수준을 public으로 변경
또한 intM 맴버의 액세스 가능성 수준을 internal로 변경
이 경우에는 클래스를 인스턴스화할 수 있지만 내부 멤버에는 액세스할 수 있음.

// Assembly2.cs
public class BaseClass
{  
   internal static int intM = 0;  
}
// Assembly2_a.cs
public class TestAccess
{  
   static void Main()
   {  
      var myBase = new BaseClass();   // Ok.  
      BaseClass.intM = 444;    // CS0117  
   }  
}
profile
부족함이 많지만 항상 배우고 있는 학부생입니다 :>

0개의 댓글