Ler em inglês

Compartilhar via


Erro do Compilador CS0456

O parâmetro de tipo "Type Parameter Name 1" tem a restrição "struct" para que "Type Parameter Name 1" não possa ser usado como restrição para o "Type Parameter Name 2"

As restrições de tipo de valor são implicitamente seladas para que não possam ser usadas como restrições em um segundo parâmetro de tipo. Isso ocorre porque os tipos de valor não podem ser substituídos. Para resolver esse erro, coloque uma restrição de tipo de valor diretamente no segundo parâmetro de tipo, em vez de fazê-lo indiretamente por meio do primeiro parâmetro de tipo.

Exemplo

O exemplo a seguir gera o erro CS0456.

// CS0456.cs  
// compile with: /target:library  
public class GenericsErrors  
{  
   public class G5<T> where T : struct  
   {  
      public class N<U> where U : T {}   // CS0456  
      public class N2<U> where U : struct {}   // OK  
   }  
}