如果有人告诉我如何在ref class中声明动态多维数组,我将不胜感激?有人可以发布示例代码吗?
答案 0 :(得分:2)
如果您能负担数组重新分配,请使用array
类型。
您可以使用“数组数组”构造
/// Declaration
array<array<SomeType>^>^ arr;
/// Inititalization
arr = gcnew array<array<SomeType>^> (NumElts1);
for(int i=0 ; i < NumElts1 ; i++)
{
arr[i] = gcnew array<SomeType> (NumElts2);
}
或只是多维的:
array<SomeType, NumDims> ^ Arr =
gcnew array<SomeType, NumDims>(NumElts1, NumElts2, ....);
所有东西都是垃圾收集的,所以你不必担心会破坏它们。
如果您确实需要“动态”数组,那么您可能会查找System.Collections.Generic.List<T>
并使用“列表列表”。列表具有ToArray()方法。
编辑:
C ++ / CLI中的array
类型是一个模板:
template<typename T, int NumDims = 1>
ref class array: System::Array
{
// black magic here
}
所以你可以将它用于没有第二个参数的1D阵列。
array<SomeType>^ Arr = gcnew array<SomeType>(SizeOfThisArray);