Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 사용할 수 있는 다양한 유형의 액세스 한정자는 무엇입니까?

<시간/>

액세스 한정자는 클래스 구성원의 액세스 가능성 범위 또는 클래스 자체 유형을 지정하는 데 사용됩니다. 액세스 수정자에는 6가지 유형이 있습니다.

  • 공개

  • 비공개

  • 보호됨

  • 내부

  • 내부 보호

  • 비공개

공개 액세스 수정자

공개 액세스 수정자를 구현하는 개체는 제한 없이 프로젝트의 모든 위치에서 액세스할 수 있습니다.

예시

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         //Person Name is accessible as it is public
      }
   }
   public class Person{
      public string Name = "Mark";
   }
}

비공개 액세스 수정자

private access modifier를 구현하는 개체는 클래스나 구조체 내부에서만 액세스할 수 있습니다. 결과적으로 생성된 클래스 외부에서 액세스할 수 없습니다.

예시

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         //Since Name is private it is not accessible in Program class.
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
   public class Person{
      private string Name = "Mark";
   }
}

보호된 액세스 수정자

protected 키워드는 클래스 내부와 해당 클래스에서 파생된 모든 클래스에서 개체에 액세스할 수 있음을 의미합니다.

예시

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Employee employee = new Employee();
         employee.Print(); //Output: Mark
         Person person = new Person();
         Console.WriteLine(person.Name);
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
   public class Person{
      protected string Name = "Mark";
   }
   public class Employee : Person{
      public void Print(){
         Console.WriteLine(Name);
      }
   }
}

내부 액세스 수정자

Internal 키워드의 경우 현재 프로젝트 어셈블리 내에 정의된 클래스에만 액세스가 제한됩니다.

예시

프로젝트 1 -

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name); //Output: Mark
      }
   }
   public class Person{
      internal string Name = "Mark";
   }
}

출력

Mark

프로젝트 2 -

using MyApplication;
using System;
namespace Project2{
   public class Project2Class{
      public void Print(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
}

보호된 내부 액세스 수정자 -

보호된 내부 액세스 수정자는 보호와 내부의 조합입니다. 결과적으로 동일한 어셈블리 또는 다른 어셈블리의 파생 클래스에서만 보호된 내부 멤버에 액세스할 수 있습니다.

예시

프로젝트 1 -

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name); //Output: Mark
      }
   }
   public class Person{
      protected internal string Name = "Mark";
   }
}

출력

Mark

프로젝트 2 -

using MyApplication;
using System;
namespace Project2{
   public class Project2Class : Person{
      public void Print(){
         Console.WriteLine(Name); //Output: Mark
      }
   }
}

개인 보호 액세스 수정자

private protected 액세스 수정자는 private 및 protected 키워드의 조합입니다. 포함 클래스 내부 또는 포함 클래스에서 파생된 클래스의 멤버에 액세스할 수 있지만 동일한 어셈블리(프로젝트)에서만 가능합니다. 따라서 다른 어셈블리에서 액세스하려고 하면 오류가 발생합니다. 이 수정자는 C# 버전 7.2 이상에서 유효합니다.