Erreur du compilateur CS0311
Impossible d’utiliser le type 'type1' comme paramètre de type 'T' dans le type ou la méthode générique '<name>'. Il n’existe aucune conversion de référence implicite de 'type1' vers 'type2'.
Quand une contrainte est appliquée à un paramètre de type générique, il doit exister une conversion de référence ou d’identité implicite de l’argument concret en type de la contrainte.
Pour corriger cette erreur
Changez l’argument que vous utilisez pour créer la classe.
Si vous êtes propriétaire de la classe, vous pouvez supprimer la contrainte ou faire en sorte qu’il y ait une conversion d’identité ou de référence implicite. Par exemple, vous pouvez faire en sorte que le deuxième type hérite du premier.
Exemple
// cs0311.cs
class B {}
class C {}
class Test<T> where T : C
{ }
class Program
{
static void Main()
{
Test<B> test = new Test<B>(); //CS0311
}
}
Si cette erreur se produit quand vous tentez d’utiliser un argument de type valeur, notez qu’une conversion numérique implicite, par exemple de short
en int
, ne satisfait pas à un paramètre de type générique.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour