다음을 통해 공유


컴파일러 오류 CS0507

‘function1’: ‘access’ 상속된 ‘function2’ 멤버를 재정의할 때 액세스 한정자를 변경할 수 없습니다.

메서드 재정의 액세스 사양을 변경하려고 했습니다.

예 1

다음 샘플에서는 CS0507을 생성합니다.

// CS0507.cs  
abstract public class clx  
{  
   virtual protected void f() {}  
}  
  
public class cly : clx  
{  
   public override void f() {}   // CS0507  
   public static void Main() {}  
}  

예제 2

클래스가 참조된 메타데이터에서 정의된, protected internal로 표시된 메서드를 재정의하려고 하는 경우에도 CS0507이 발생할 수 있습니다. 이 경우 재정의 메서드를 protected로 표시해야 합니다.

// CS0507_b.cs  
// compile with: /target:library  
abstract public class clx  
{  
   virtual protected internal void f() {}  
}  

다음 샘플에서는 CS0507을 생성합니다.

// CS0507_c.cs  
// compile with: /reference:cs0507_b.dll  
public class cly : clx  
{  
   protected internal override void f() {}   // CS0507  
   // try the following line instead  
   // protected override void f() {}   // OK  
  
   public static void Main() {}  
}