Ler em inglês

Partilhar via


Erro do compilador CS0456

O parâmetro de tipo 'Type Parameter Name 1' tem a restrição 'struct', portanto, 'Type Parameter Name 1' não pode ser usado como uma restrição para 'Type Parameter Name 2'

As restrições de tipo de valor são implicitamente seladas, de modo que essas restrições não podem 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 CS0456.

C#
// 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  
   }  
}