Udostępnij przez


Błąd kompilatora C3225

argument typu ogólnego dla "arg" nie może być typem, musi być typem wartości lub typem uchwytu

Uwagi

Argument typu ogólnego nie był poprawnym typem.

Aby uzyskać więcej informacji, zobacz Ogólne.

Przykłady

Nie można utworzyć wystąpienia typu ogólnego z typem natywnym. Poniższy przykład generuje kod 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
}

Poniższy przykład tworzy składnik przy użyciu języka C#. Zwróć uwagę, że ograniczenie określa, że typ ogólny można utworzyć tylko za pomocą typu wartości.

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

W tym przykładzie używany jest składnik C#-authored i narusza ograniczenie, że element MyList może zostać utworzony tylko przy użyciu typu wartości innej niż Nullable. Poniższy przykład generuje kod 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
}