Ошибка компилятора C3225
Аргумент универсального типа для arg не может быть типом типа, он должен быть типом значения или типом дескриптора.
Аргумент универсального типа не был правильным типом.
Дополнительные сведения см. в статье Универсальные шаблоны.
Примеры
Создать экземпляр универсального типа с собственным типом невозможно. В следующем примере возникает ошибка 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
}
В следующем примере создается компонент с помощью C#. Обратите внимание, что ограничение указывает, что универсальный тип можно создать только с типом значения.
// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}
В этом примере используется компонент C#, который нарушает ограничение, которое MyList можно создать только с типом значения, отличным Nullableот типа. В следующем примере возникает ошибка 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
}