在 C++/CLI 中创建具有空维度大小的多维数组

Creating a multidimensional array in C++/CLI with an empty dimension size

我正在将 C# 项目转换为 C++/CLI 项目。我遇到了这段代码,想验证我是否使用了正确的 C++/CLI 语法。我很确定我做错了,只是在我想设置尺寸大小时设置参数。

原始 C#:

public double[][] _ARRAY = new double[num][];

C++/CLI:

array<double, 2>^ _ARRAY = gcnew array<double, 2>{ {num}, {} };

这就是您在 C++/CLI 中创建多维数组的方式。但 C# 实际上根本不是多维数组。

这两个是一样的:

/* C# */ public double[][] arrayOfArray;
/* C++/CLI */ array<array<double>^>^ arrayOfArray;

还有这些:

/* C# */ public double [,] array2D;
/* C++/CLI */ array<double,2>^ array2D;

一个真正的二维数组不能像你展示的那样是半维的,这只有在锯齿状数组(数组的数组)中才有可能。对于锯齿状的数组,C++/CLI当然应该允许

arrayOfArray = gcnew array<array<double>^>(num);

这是(就像您问题中的 C# 代码一样)数组(最初为空)托管数组句柄。