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

C#의 인터페이스 내에서 액세스 한정자를 지정할 수 없는 이유는 무엇입니까?


인터페이스 메소드는 이 인터페이스를 구현하는 클래스가 특정 작업 세트를 수행하도록 지정하는 외부 세계와의 계약입니다.

인터페이스의 목적은 다른 유형이 클래스 또는 구조체에 액세스할 수 있도록 하는 것이기 때문에 인터페이스 멤버는 항상 공용입니다.

인터페이스는 protected 또는 internal 등과 같은 액세스 지정자를 가질 수 있습니다. 따라서 '외부 세계'를 '전체 외부 세계'의 하위 집합으로 제한합니다.

예시

interface IInterface{
   void Save();
}
class Program{
   static void Main(){
      Console.ReadLine();
   }
}

위의 예는 오류 없이 올바르게 컴파일됩니다.

C# 8 이전에는 인터페이스 멤버가 기본적으로 공개되었습니다. 실제로 인터페이스 멤버(공개 포함)에 액세스 한정자를 넣으면 컴파일러 오류가 발생합니다.

interface IInterface{
   Public void Save();
}
class Program{
   static void Main(){
      Console.ReadLine();
   }
}

위의 코드는 C# 7.0에서는 컴파일 시간 오류를 발생시켰지만 C# 8.0에서는 오류 없이 컴파일되었습니다.