어느 날 프로토타입 제작을 위해 VS2022에서 새로운 클래스를 생성했는데 기본 한정자가 public에서 internal로 변경되었는지 internal로 생성이 되더군요. 이 기회에 C#에서 사용하고 있는 액세스 한정자에 대해 알아보고 정리해 둡니다.

 

 

 

1. 액세스 한정자 - Access Modifiers

 

모든 형식과 형식 멤버에는 접근성 수준이 있습니다. 접근성 수준은 어셈블리 또는 다른 어셈블리의 다른 코드에서 사용할 수 있는지 여부를 제어합니다. 어셈블리는 단일 컴파일에서 하나 이상의. cs 파일을 컴파일하여 만든. dll 또는. exe입니다. 선언할 때 형식 또는 멤버의 액세스 가능성을 지정하려면 다음과 같은 액세스 한정자를 사용합니다.

 

쉽게 설명하면 한 클래스에서 다른 클래스의 멤버 변수나 함수에 접근할 때 그 접근이 가능한지 여부를 결정짓는 게 액세스 한정자입니다.

 

 

 

2. 액세스 한정자의 종류

 

C#에서 액세스 한정자는 6가지가 있습니다. 6가지는 다음과 같습니다.

  • public: 형식 또는 멤버는 동일한 어셈블리 또는 이를 참조하는 다른 어셈블리의 다른 코드에서 액세스 할 수 있습니다. 형식의 public 멤버에 대한 액세스 가능성 수준은 형식 자체의 액세스 가능성 수준에 의해 제어됩니다.
  • private: 형식 또는 멤버는 동일한 클래스 또는 구조체의 코드에서만 액세스 할 수 있습니다.
  • protected: 유형 또는 멤버는 동일한 클래스 또는 해당 클래스에서 파생된 클래스의 코드에서만 액세스 할 수 있습니다.
  • internal: 동일한 어셈블리의 모든 코드에서 형식 또는 멤버에 액세스 할 액세스 할 수 있지만 다른 어셈블리에서는 액세스 할 수 없습니다. 즉, 내부 형식이나 멤버는 동일한 컴파일의 일부인 코드에서 액세스 할 수 있습니다.
  • protected internal: 형식 또는 멤버는 선언된 어셈블리의 모든 코드에서 또는 다른 어셈블리의 파생 클래스 내에서 액세스 할 수 있습니다.
  • private protected: 포함하는 어셈블리 내에서 선언된 클래스에서 파생된 형식에서 형식 또는 멤버에 액세스할 수 있습니다.

해당 기능을 표로 정리하면 다음과 같습니다.

 

 

 

더욱더 자세한 내용은 다음 페이지를 참고하시면 좋습니다: Access Modifiers (C# Programming Guide)

 

Access Modifiers - C# Programming Guide

All types and type members in C# have an accessibility level which controls whether they can be used from other code. Review this list of access modifiers.

docs.microsoft.com

 

 

 

 

 

 

 

반응형

+ Recent posts