Действительно Выстраивает. Работа копии с многомерными массивами?

Этот код хорошо работает:

var newArray = new Rectangle[newHeight, newWidth];

for (int x = 0; x < newWidth; x++)
    for (int y = 0; y < newHeight; y++)
        newArray[y, x] = (x >= width) || (y >= height) ? Rectangle.Empty : tiles[y, x];

, Но у меня нет большой удачи при замене его Массивом. Копия. В основном, если измененный массив больше, он просто добавляет пустые прямоугольники к краям. Если это меньше затем, это должно просто отключить края.

При выполнении этого:

Массив. Копия (мозаики, newArray, newWidth * newHeight);

Это портит массив, и все его содержание становится беспорядочным и не сохраняет их исходный индекс. Возможно, у меня просто есть brainfart или что-то?

24
задан Andrew Godfrey 1 September 2011 в 02:26
поделиться

2 ответа

Я использую этот код:

public static void ResizeBidimArrayWithElements<T>(ref T[,] original, int rows, int cols)
{

    T[,] newArray = new T[rows, cols];
    int minX = Math.Min(original.GetLength(0), newArray.GetLength(0));
    int minY = Math.Min(original.GetLength(1), newArray.GetLength(1));

    for (int i = 0; i < minX; ++i)
        Array.Copy(original, i * original.GetLength(1), newArray, i * newArray.GetLength(1), minY);

    original = newArray;

}

вызывая так для массива строк

ResizeBidimArrayWithElements<string>(ref arrayOrigin, vNumRows, vNumCols);
6
ответ дан 28 November 2019 в 23:30
поделиться

Просто используйте функцию «Clone ()» следующим образом:

Это ваш список массивов

object newArray = new object [row, column];

Когда вы создаете другой Массив просто используйте этот код:

object[,] clonedArray = (object[,]) newArray.Clone();

Просто! Веселись!

1
ответ дан 28 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: