编译器错误 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() {}  
}