Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# internal 키워드란? 내부 접근 한정자의 개념과 사용 이유

C#에서 internal 키워드는 멤버의 접근 범위를 같은 어셈블리(assembly) 내부로 제한하는 내부 접근 한정자(internal access specifier)를 지정할 때 사용합니다.

internal로 선언된 클래스나 멤버는 동일한 어셈블리 안에 있는 다른 클래스와 객체라면 자유롭게 접근할 수 있지만, 어셈블리 외부에서는 접근이 불가능합니다.

internal 접근 한정자의 특징

  • 같은 프로젝트(어셈블리) 내에서는 public처럼 자유롭게 접근 가능합니다.
  • 다른 어셈블리에서는 해당 멤버에 접근할 수 없으므로 라이브러리의 내부 구현을 숨기는 데 유용합니다.
  • 클래스, 필드, 메서드 등 다양한 멤버에 적용할 수 있습니다.

즉, internal이 지정된 멤버는 그 멤버가 정의된 응용 프로그램(어셈블리) 내부에 있는 어떤 클래스나 메서드에서든 접근할 수 있습니다.

예제 코드

아래 예제에서 Rectangle 클래스의 length와 width 필드는 internal로 선언되었습니다. 따라서 같은 어셈블리 안에 있는 Demo 클래스의 Main 메서드에서 직접 값을 할당할 수 있습니다.

using System;

namespace RectangleApplication {
    class Rectangle {

        internal double length;
        internal double width;

        double GetArea() {
            return length * width;
        }

        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }

    class Demo {
        static void Main(string[] args) {
            Rectangle rc = new Rectangle();
            rc.length = 10.35;
            rc.width = 8.3;
            rc.Display();
            Console.ReadLine();
        }
    }
}

실행 결과

Length: 10.35
Width: 8.3
Area: 85.905

internal 키워드를 사용하는 이유

internal은 주로 다음과 같은 상황에서 활용됩니다.

  • 캡슐화 강화: 라이브러리나 프레임워크를 배포할 때 외부에 공개할 필요가 없는 내부 구현 세부 사항을 숨길 수 있습니다.
  • 안전성 확보: 어셈블리 외부 코드가 내부 로직에 의존하거나 임의로 변경하는 것을 방지하여 유지보수성을 높입니다.
  • 협업 개발: 하나의 큰 프로젝트 내에서 여러 모듈이 서로의 기능을 공유하되, 외부에는 필요한 API만 노출하고 싶을 때 적합합니다.

이처럼 internal 키워드는 접근 범위를 어셈블리 단위로 관리함으로써 코드의 보안성과 구조적 완결성을 함께 얻을 수 있게 해주는 중요한 도구입니다.