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
.
Supprimez la contrainte.
Dans l’exemple suivant, changez le deuxième argument de type en
int?
ouobject
.
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.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :