编译器错误 C3225
“arg”的泛型类型参数不能是“type”,它必须是值类型或句柄类型
泛型类型参数不是正确的类型。
有关详细信息,请参阅泛型。
示例
不能使用本机类型实例化泛型类型。 以下示例生成 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
}