Lire en anglais

Partager via


Erreur du compilateur CS0456

Le paramètre de type 'nom_paramètre_type1' a la contrainte 'struct', donc 'nom_paramètre_type1' ne peut pas être utilisé comme contrainte pour 'nom_paramètre_type2'

Les contraintes de type valeur sont implicitement sealed. Ainsi, ces contraintes ne peuvent pas être utilisées comme contraintes sur un deuxième paramètre de type. Cela est dû au fait que les types valeur ne peuvent pas être substitués. Pour résoudre cette erreur, placez une contrainte de type valeur directement sur le deuxième paramètre de type, plutôt qu’indirectement par le premier paramètre de type.

Exemple

L’exemple suivant génère l’erreur 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  
   }  
}