Partage via


Erreur du compilateur C3225

argument de type générique pour 'arg' ne peut pas être 'type', il doit s’agir d’un type valeur ou d’un type de handle

L’argument de type générique n’était pas du type correct.

Pour plus d’informations, consultez Génériques.

Exemples

Vous ne pouvez pas instancier un type générique avec un type natif. L’exemple suivant génère l’erreur C3225.

// C3225.cpp
// compile with: /clr
class A {};

ref class B {};

generic <class T>
ref class C {};

int main() {
   C<A>^ c = gcnew C<A>;   // C3225
   C<B^>^ c2 = gcnew C<B^>;   // OK
}

L’exemple suivant crée un composant à l’aide de C#. Notez que la contrainte spécifie que le type générique ne peut être instancié qu’avec un type valeur.

// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}

Cet exemple utilise le composant C#-authored et enfreint la contrainte que MyList ne peut être instanciée qu’avec un type valeur autre que Nullable. L’exemple suivant génère l’erreur C3225.

// C3225_c.cpp
// compile with: /clr
#using "C3225_b.dll"
ref class A {};
value class B {};
int main() {
   MyList<A> x;   // C3225
   MyList<B> y;   // OK
}