Lire en anglais

Partager via


Erreur du compilateur CS0312

Impossible d’utiliser le type 'type1' comme paramètre de type 'nom' dans le type ou la méthode générique 'nom'. Le type Nullable 'type1' ne satisfait pas la contrainte de 'type2'.

Un type de valeur Nullable est distinct de son équivalent non Nullable ; il n’existe pas de conversion de référence implicite ou de conversion d’identification entre eux. Une conversion boxing nullable ne satisfait pas la contrainte de type générique. Dans l’exemple qui suit, le premier paramètre de type est un Nullable<int> et le deuxième est un System.Int32.

Pour corriger cette erreur

  1. Supprimez la contrainte.

  2. Dans l’exemple suivant, changez le deuxième argument de type en int? ou object.

Exemple

Le code suivant génère l’erreur CS0312 :

// cs0312.cs  
class Program  
{  
    static void MTyVar<T, U>() where T : U { }  
  
    static int Main()  
    {  
        MTyVar<int?, int>(); // CS0312  
        return 1;  
    }  
}  

Bien qu’un type de valeur Nullable soit distinct d’un type non Nullable, différents types de conversions sont autorisés entre les valeurs Nullable et non Nullable.

Voir aussi