Ler em inglês

Compartilhar via


Erro do Compilador CS0546

'accessor': não pode substituir porque 'property' não tem um acessador set substituível

Falha na tentativa de substituir um dos métodos do acessador para uma propriedade porque o acessador não pode ser substituído. Esse erro pode acontecer se:

  • a propriedade de classe base não for declarada como virtual.

  • a propriedade de classe base não declarar o acessador get ou set que você está tentando substituir.

Se você não quiser substituir a propriedade de classe base, poderá usar a palavra-chave new antes da propriedade na classe derivada.

Para obter mais informações, consulte Propriedades using.

Exemplo

O exemplo a seguir gera o erro CS0546 porque a classe base não declara um acessador definido para a propriedade.

// CS0546.cs  
// compile with: /target:library  
public class a  
{  
   public virtual int i  
   {  
      get  
      {  
         return 0;  
      }  
   }  
  
   public virtual int i2  
   {  
      get  
      {  
         return 0;  
      }  
  
      set {}  
   }  
}  
  
public class b : a  
{  
   public override int i  
   {  
      set {}   // CS0546 error no set  
   }  
  
   public override int i2  
   {  
      set {}   // OK  
   }  
}  

Confira também