Condividi tramite


Errore del compilatore CS0507

'funzione1': non è possibile cambiare i modificatori di accesso quando viene eseguito l'override di 'accesso' del membro ereditato 'funzione2'

È stato eseguito un tentativo di modificare la specifica di accesso nell'override di un metodo.

Esempio 1

L'esempio seguente genera l'errore CS0507.

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

Esempio 2

L'errore CS0507 può verificarsi anche se una classe tenta di eseguire l'override di un metodo contrassegnato come protected internal definito nei metadati di riferimento. In questa situazione, il metodo sottoposto a override deve essere contrassegnato come protected.

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

L'esempio seguente genera l'errore 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() {}  
}