0

如果有人告诉我应该如何在 ref 类中声明一个动态多维数组,我将不胜感激?有人可以发布示例代码吗?

4

1 回答 1

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
}

所以你可以将它用于没有第二个参数的一维数组。

array<SomeType>^ Arr = gcnew array<SomeType>(SizeOfThisArray);
于 2012-07-25T22:44:41.077 回答