C#에서는 internal 접근 한정자를 사용하여 클래스의 내부 변수를 선언할 수 있습니다.
internal double length; internal double width;
internal 접근 한정자가 지정된 멤버는 해당 멤버가 정의된 동일한 어셈블리(응용 프로그램) 내부에 있는 모든 클래스나 메서드에서 자유롭게 접근할 수 있습니다. 다만 어셈블리 외부에서는 접근이 불가능하므로, 프로젝트 내부에서만 공유하고 싶은 멤버에 적합합니다.
예제 코드
아래 예제에서 Rectangle 클래스의 length와 width 변수는 internal로 선언되어 있으며, 같은 네임스페이스 내의 ExecuteRectangle 클래스에서 직접 값을 할당하고 있습니다.
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());
}
} // Rectangle 클래스 끝
class ExecuteRectangle {
static void Main(string[] args) {
Rectangle r = new Rectangle();
r.length = 4.5; // internal 변수이므로 같은 어셈블리 내에서 접근 가능
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}실행 결과
Length: 4.5 Width: 3.5 Area: 15.75
핵심 정리
internal 멤버는 같은 프로그램(어셈블리) 안이라면 어디서든 접근할 수 있기 때문에, 위 예제처럼 별도의 public 메서드 없이도 다른 클래스에서 r.length처럼 직접 값을 설정할 수 있습니다. 만약 변수가 private으로 선언되었다면 외부 클래스에서 접근할 수 없으므로 컴파일 오류가 발생하게 됩니다.