Kompilatorfel C3225

generiskt typargument för "arg" får inte vara "typ", det måste vara en värdetyp eller handtagstyp

Anmärkningar

Argumentet för allmän typ var inte av rätt typ.

Mer information finns i Generiska objekt.

Examples

Du kan inte instansiera en allmän typ med en intern typ. I följande exempel genereras 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
}

I följande exempel skapas en komponent med C#. Observera att villkoret anger att den allmänna typen endast kan instansieras med en värdetyp.

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

Det här exemplet använder komponenten C#-authored och bryter mot villkoret att MyList bara kan instansieras med en annan värdetyp än Nullable. I följande exempel genereras 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
}