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

C# 클래스의 기본 접근 한정자는 무엇일까?

C#에서 접근 한정자(access modifier)를 명시하지 않으면 클래스의 기본 접근 수준은 Internal입니다. Internal 접근 지정자는 클래스가 현재 어셈블리(assembly) 안에 있는 다른 함수와 객체에 자신의 멤버 변수와 멤버 함수를 공개할 수 있도록 허용합니다.

쉽게 말해, internal로 선언된 멤버는 해당 멤버가 정의된 응용 프로그램(어셈블리) 내부라면 어떤 클래스나 메서드에서든 자유롭게 접근할 수 있습니다. 반대로 어셈블리 외부에서는 접근이 허용되지 않습니다.

참고로 최상위(top-level) 클래스의 기본 접근 수준은 internal이지만, 다른 클래스 내부에 중첩된(nested) 클래스의 기본 접근 수준은 private이라는 점도 함께 기억해 두면 좋습니다.

Internal 접근 지정자 사용 예제

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());
        }

    }//end class Rectangle

    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.length = 4.5;
            r.width = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

실행 결과

Length: 4.5
Width: 3.5
Area: 15.75

위 예제에서 length와 width는 internal로 선언되었기 때문에 같은 어셈블리 내의 ExecuteRectangle 클래스에서 직접 접근할 수 있습니다. 반면 GetArea() 메서드에는 접근 한정자가 명시되지 않았으므로 기본값인 private으로 처리되어 클래스 외부에서는 호출할 수 없습니다.