어느 날 프로토타입 제작을 위해 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)
반응형
'Programming > C#' 카테고리의 다른 글
[C#] Entity Framework를 사용해 join 쿼리문을 수행하는 방법. (0) | 2022.07.26 |
---|---|
[C#] EntityFramework로 MySQL / MariaDB에 연결하기. (0) | 2022.07.21 |
Cannot load Counter Name data because an invalid index '' was read from the registry. (0) | 2022.05.02 |
[C#] Hostname으로 IP 주소 가져오기. (0) | 2021.06.29 |
[C# | MongoDB Driver 2.0+] Element 'key' does not match any field or property of class (0) | 2021.06.08 |