Вам придется перебирать и копировать все строки отдельно. Однако необработанный тип Array^
не подходит для работы, поэтому вам нужно что-то сделать.
В принципе, то, что вам нужно сделать, это:
for (int outer = 0; outer < vList->Count; outer++)
{
arrayOfSomeSort^ innerArray = vList[outer];
for (int inner = 0; inner < innerArray.Length; inner++)
anArray[outer, inner] = innerArray[inner];
}
В зависимости от того, как остальная часть программы, и какие объекты на самом деле в списке, есть несколько вариантов, что делать. Вот варианты, которые я вижу, в порядке предпочтения.
- Вместо
List<Array^>^
, имеют vList
быть List<array<String^>^>^
. Если List действительно представляет собой список массивов строк, то этот вариант, вероятно, является наиболее правильным. В этом случае arrayOfSomeSort^
будет array<String^>^
.
- Если
vList
не может изменить тип, но это действительно содержит строковые массивы, то я бы локальная переменная innerArray
быть типа array<String^>^
, и сделать бросок, как вы вытащите его из vList
.
- Если массивы в списке не являются строковыми массивами, но вместо этого представляют собой массивы объектов, которые содержат строки, тогда у меня будет
array<Object^>^ innerArray
, и вместо этого сделайте это вместо этого и сделайте приведение к String^
, когда вы вытащите каждую строку из innerArray
.
- Если ни один из них не подходит, вы можете оставить
innerArray
как тип Array^
. Вам нужно будет вызвать явный метод Array.GetValue(int)
вместо индексатора []
. Как и в предыдущем варианте, вам нужно будет отбросить каждую строку, когда вы вытащите ее из внутреннего массива.
Вы установили второе измерение в 5 без проверки длины внутренних массивов; Я предполагаю, что вы знаете то, чего у нас нет, и уверены, что не будет ничего большего, чем 5. Если нет, вам нужно будет перебирать список один раз, чтобы получить максимальный размер массива, создать 2D-массив, а затем скопируйте строки.
Выбирайте правильные типы, попадайте в яму успеха с помощью 'List ^> ^', чтобы вы прибивали тип элемента и не должны иметь дело с тем, что у вас есть элемент массива, который не строка. И неровный массив вместо двумерного массива (массив ^> ^), поэтому ToArray() может работать. Также намного быстрее. –
К сожалению, это не сработает. 'cli :: array^tablica2D;' работает, но это не то, что я хотел, и я не могу получить элемент с заданным индексом. –