프로그램 예제가 포함된 C#의 액세스 한정자(지정자)

⚡ 스마트 요약

C#에서 접근 제한자는 클래스, 속성 또는 메서드의 가시성을 설정하는 키워드로, 외부 프로그램에서 해당 요소에 접근할 수 있는 범위를 제한합니다. 생성자는 클래스의 객체가 생성될 때마다 필드 값을 자동으로 초기화합니다.

  • 🔐 은밀한: private 접근 제한자는 해당 멤버를 동일한 클래스 내의 구성원으로 제한하여 외부 프로그램의 접근을 차단합니다.
  • 🌐 공공의: `public` 접근 제한자는 속성이나 메서드를 외부 프로그램에 제한 없이 노출합니다.
  • 🛡️ 보호됨 : protected 접근 제어자는 현재 클래스를 상속받은 클래스와만 멤버를 공유합니다.
  • 📦 본질: 내부 접근 제한자는 동일한 어셈블리 내에서의 접근을 허용하지만 외부 프로그램에서의 접근은 허용하지 않습니다.
  • 🏗️ 건설자: 생성자는 클래스 이름을 공유하고, 반환 타입을 받지 않으며, 객체가 생성될 때 필드를 초기화합니다.
  • 🤖 AI 지원: GitHub Copilot은 수정자와 생성자를 구성하는 기본 틀을 제공하고, ML.NET은 클래스 속성을 모델 기능에 매핑합니다.

C#에서의 접근 한정자(지정자)

C#의 액세스 수정자(지정자)란 무엇입니까?

액세스 한정자 C#에서 접근 지정자(Access Specifier)는 클래스 속성이나 메서드의 가시성을 정의하는 데 사용되는 키워드입니다. 다른 프로그램에서 클래스의 속성이나 메서드를 볼 수 없도록 하려는 경우에 사용됩니다. 접근 제한자는 다른 프로그램이 클래스의 속성이나 메서드를 볼 수 없도록 접근을 제한합니다.

C#에는 6가지 유형의 액세스 한정자가 있습니다.

  • 프라이빗 투어
  • 공공 영역
  • 보호
  • 내부의
  • 내부 보호
  • 개인 보호

아래 설명과 같이 프로그램 예제를 통해 C#의 주요 접근 한정자에 대해 알아 보겠습니다.

C#의 개인 액세스 한정자

Private 액세스 한정자가 속성이나 메서드에 연결되면 해당 멤버는 외부 프로그램에서 액세스할 수 없음을 의미합니다.

비공개 액세스 수정자의 예

예를 들어 개인 액세스 수정자를 사용할 때 어떤 일이 발생하는지 살펴보겠습니다.

Tutorial.cs 파일의 현재 코드를 수정해 보겠습니다. SetTutorial 메서드에서 public 키워드를 private으로 변경해 보겠습니다.

비공개 액세스 수정자

이제 Program.cs 파일로 전환해 보겠습니다. SetTutorial 메서드 아래에 빨간색 구불구불한 선이 있음을 알 수 있습니다.

이제 우리는 Tutorial 클래스에서 SetTutorial 메서드를 private으로 선언했기 때문에 Visual Studio는 이를 감지했습니다. 이 메서드는 이제 Program.cs 파일에서 작동하지 않을 것이라고 강조하여 사용자에게 알렸습니다.

비공개 액세스 수정자

C# 공개 액세스 한정자

Public 액세스 한정자가 속성이나 메서드에 연결되면 해당 멤버는 모든 외부 프로그램에서 액세스할 수 있음을 의미합니다. 우리는 이전 예에서 이것을 이미 보았습니다.

공개 액세스 수정자의 예

C# 공개 액세스 한정자

Tutorial 클래스에서 메소드를 공개로 정의했으므로 Program.cs 파일에서 액세스할 수 있습니다.

C#의 보호된 액세스 한정자

Protected 액세스 한정자를 속성이나 메서드에 연결하면 해당 멤버에 대해서만 액세스할 수 있음을 의미합니다. 상속된 클래스 현재에서 수업. 이에 대해서는 상속 클래스에서 자세히 설명하겠습니다.

C# 내부 액세스 한정자

내부 액세스 한정자가 속성이나 메서드에 연결되면 해당 멤버는 내부 프로그램에서만 액세스할 수 있고 외부 프로그램에서는 액세스할 수 없습니다.

C# 생성자

C# 생성자는 해당 객체가 생성될 때 클래스 필드의 값을 초기화하는 데 사용됩니다. 생성자는 클래스의 이름과 동일한 이름을 갖는 메소드입니다. 생성자가 클래스에 정의된 경우 객체가 생성될 때 호출되는 첫 번째 메서드를 제공합니다. Employee라는 클래스가 있다고 가정해 보겠습니다. 생성자 메서드의 이름도 Employee()로 지정됩니다.

생성자 메서드에 대해 주의해야 할 핵심 사항은 다음과 같습니다.

  1. 생성자에 대한 C# 기본 액세스 한정자를 공개로 설정해야 합니다.
  2. 생성자 메서드에는 반환 형식이 없어야 합니다.

C# 생성자의 예

이제 생성자 사용자를 코드에 통합하는 방법을 살펴보겠습니다. 객체가 생성될 때 생성자를 사용하여 TutorialID 및 TutorialName 필드를 일부 기본값으로 초기화합니다.

단계 1) 첫 번째 단계는 Tutorial 클래스의 생성자를 만드는 것입니다. 이 단계에서는 Tutorial.cs 파일에 아래 코드를 추가합니다.

C# 생성자

Code 설명:-

  1. 먼저 클래스 이름과 동일한 이름을 가진 새 메서드를 추가합니다. 클래스와 이름이 동일하기 때문에 C#에서는 이를 생성자 메서드로 처리합니다. 이제 호출 메서드가 이 클래스의 객체를 생성할 때마다 이 메서드가 기본적으로 호출됩니다.
  2. Tutorial 생성자에서는 TutorialID 값을 0으로, TutorialName 값을 "Default"로 설정합니다. 따라서 객체가 생성될 때마다 이러한 필드는 항상 이러한 기본값을 갖습니다.

이제 Program.cs 파일로 전환하고 SetTutorial 메서드를 호출하는 줄을 제거하겠습니다. 이는 생성자가 어떻게 작동하는지 확인하고 싶기 때문입니다.

C# 생성자

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code 설명:-

  1. 첫 번째 단계는 Tutorial 클래스에 대한 개체를 만드는 것입니다. 이는 'new' 키워드를 통해 수행됩니다.
  2. Tutorial 클래스의 GetTutorial 메서드를 사용하여 TutorialName을 가져옵니다. 그런 다음 Console.WriteLine 메서드를 통해 콘솔에 표시됩니다.

위 코드를 올바르게 입력하여 프로그램을 실행하면 다음과 같은 출력이 표시됩니다.

출력:

C# 생성자

출력에서 생성자가 실제로 호출되었으며 TutorialName의 값이 "Default"로 설정되었음을 확인할 수 있습니다.

참고 : 여기서 "default" 값은 생성자에서 가져옵니다.

자주 묻는 질문

별도의 접근 제한자가 지정되지 않은 경우, 클래스 및 구조체 멤버는 기본적으로 private으로, 최상위 유형은 internal로 설정되어 가시성을 넓히기 전까지 숨겨진 상태로 유지됩니다.

Protected 속성은 동일한 클래스와 그 파생 클래스(어셈블리가 다르더라도)에 멤버를 노출합니다. Internal 속성은 동일한 어셈블리 내의 형식에만 멤버를 노출합니다.

내부 보호(Protected internal)는 동일한 어셈블리 또는 파생 클래스에서 접근할 수 있도록 허용합니다. 비공개 보호(Private protected)는 더 엄격하여 동일한 어셈블리 내에서는 파생 클래스만 접근할 수 있도록 합니다.

C#은 기본 생성자, 매개변수 생성자, 복사 생성자, 정적 생성자 및 비공개 생성자를 지원합니다. 이러한 생성자는 객체의 필드를 초기화하거나, 클래스 설정을 한 번 실행하거나, 다른 객체의 값을 복제하는 데 사용됩니다.

정적 생성자는 한정자나 매개변수를 받지 않습니다. 첫 번째 객체가 생성되거나 정적 멤버가 로드되기 전에 한 번 실행되어 정적 필드를 초기화합니다.

네. 클래스는 서로 다른 매개변수 목록을 가진 여러 생성자를 정의할 수 있습니다. 컴파일러는 `new` 메서드에 전달된 인수와 일치하는 생성자를 선택합니다.

예. GitHub Copilot은 Visual Studio 내의 클래스 이름이나 주석에서 한정자, 생성자 및 필드 초기화자를 제안합니다. VS Code. Rev각 제안된 가시성 수준을 살펴보세요.

ML.NET은 C# 데이터 클래스의 공개 속성을 모델 특징 및 레이블에 매핑합니다. 공개 getter 및 setter를 사용하면 학습 중에 해당 값을 읽을 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.