Ler em inglês

Partilhar via


Erro do compilador CS0460

As restrições para substituir e métodos de implementação de interface explícita são herdadas do método base, portanto, não podem ser especificadas diretamente

Quando um método genérico que faz parte de uma classe derivada substitui um método na classe base, você não pode especificar restrições no método substituído. O método override na classe derivada herda suas restrições do método na classe base.

Exemplo

O exemplo a seguir gera CS0460.

// CS0460.cs  
// compile with: /target:library  
class BaseClass
{  
   BaseClass() { }  
}  
  
interface I  
{  
   void F1<T>() where T : BaseClass;  
   void F2<T>() where T : struct;  
   void F3<T>() where T : BaseClass;  
}  
  
class ExpImpl : I  
{  
   void I.F1<T>() where T : BaseClass {}   // CS0460  
   void I.F2<T>() where T : class {}  // CS0460  
}