Leer en inglés

Compartir a través de


Error del compilador CS0456

El parámetro de tipo 'Type Parameter Name 1' tiene la restricción 'struct'; por tanto, 'Type Parameter Name 1' no se puede utilizar como restricción para 'Type Parameter Name 2'

Las restricciones de tipo de valor están selladas implícitamente, por lo que no se pueden usar las restricciones como restricciones en un segundo parámetro de tipo. Esto es porque los tipos de valor no se puede invalidar. Para resolver este error, coloque una restricción de tipo de valor directamente en el segundo parámetro de tipo, en lugar de hacerlo indirectamente por medio del primer parámetro de tipo.

Ejemplo

El ejemplo siguiente genera la advertencia 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  
   }  
}