Ler em inglês

Partilhar via


Erro do compilador CS0546

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

Uma tentativa de substituir um dos métodos de acessador para uma propriedade falhou porque o acessador não pode ser substituído. Este erro pode ocorrer se:

  • A propriedade de classe base não é declarada como virtual.

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

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

Para obter mais informações, consulte Usando propriedades.

Exemplo

O exemplo a seguir gera 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  
   }  
}  

Consulte também