Freigeben über


Compilerfehler C3225

generisches Typargument für 'arg' darf nicht 'type' sein, es muss ein Werttyp oder Handletyp sein.

Bemerkungen

Das generische Typargument war nicht vom richtigen Typ.

Weitere Informationen finden Sie unter Generics.

Beispiele

Sie können einen generischen Typ nicht mit einem systemeigenen Typ instanziieren. Im folgenden Beispiel wird C3225 generiert.

// 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
}

Im folgenden Beispiel wird eine Komponente mit C# erstellt. Beachten Sie, dass die Einschränkung angibt, dass der generische Typ nur mit einem Werttyp instanziiert werden kann.

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

In diesem Beispiel wird die von C# erstellte Komponente verwendet und gegen die Einschränkung, dass MyList nur mit einem Werttyp außer Nullable instanziiert werden kann, verstößt. Im folgenden Beispiel wird C3225 generiert.

// 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
}