Этот код хорошо работает:
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 или что-то?
Я использую этот код:
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);
Просто используйте функцию «Clone ()» следующим образом:
Это ваш список массивов
object newArray = new object [row, column];
Когда вы создаете другой Массив просто используйте этот код:
object[,] clonedArray = (object[,]) newArray.Clone();
Просто! Веселись!