Agn*_*ian 3 .net generics boxing c++-cli
我正在尝试创建对象引用的通用列表PointF。(不,我不想创建一个通用的PointF对象列表。)但是,以下行无法编译:
Generic::List<PointF^> ^pointList; // Generates error C3225
Run Code Online (Sandbox Code Playgroud)
另一方面,创建PointF引用数组可以毫无问题,如下所示:
array<PointF^> ^points = gcnew array<PointF^>;
Run Code Online (Sandbox Code Playgroud)
这是一个示例程序:
using namespace System;
using namespace System::Drawing;
namespace Generic = System::Collections::Generic;
int main(array<System::String ^> ^args)
{
array<PointF^> ^points = gcnew array<PointF^>{
nullptr, PointF(0.0f, 0.0f), PointF(1.0f, 0.0f), nullptr
};
Generic::List<PointF^> ^pointList;
Console::WriteLine(L"Hello World");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何创建通用参考PointF文献列表?换句话说,如何创建装箱的通用列表PointF?
这是 .Net 泛型的限制,它仅采用 CLI 兼容类型,例如值类型或对引用类型的引用。它不采用特定于 C++/CLI 的类型,例如引用类型的堆栈语义(编译为确定性终结),或者在您的情况下,对装箱值类型的引用。
Array 是 CLI 原生的,没有此限制。