Compilerfehler C3225

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

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

Dieses Beispiel verwendet die C#-authored-Komponente und verletzt die Einschränkung, die MyList nur mit einem anderen Werttyp als Nullableinstanziiert werden kann. 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
}