C# позволяет создавать массив без его инициализации с помощью GC.AllocateUnitializedArray. T может иметь любой тип, например bool или int. Однако я не знаю, как сделать это с 2D-массивом, например. bool[,] или int[,].
Я знаю, что могу выделить одномерный массив размером с двухмерный массив, а затем получить доступ это похоже на 2D-массив, вот так:
Код: Выделить всё
int[] array = GC.AllocateUninitializedArray(width * height); //width and height are width and height of the array
// ... (array is initialized)
int arrayAccessExample = array[x * height + y]; //x and y are anything greater than 0 and less than width and height, respectively
Но постоянно делать это раздражает, и если все сделать неправильно, это может легко привести к ошибкам. Я мог бы превратить доступ к массиву в функцию, которая устранила бы вероятность ошибок, но это все равно неудобно, и я бы предпочел просто использовать настоящий 2D-массив. Есть ли способ напрямую выделить неинициализированный 2D-массив или «привести» 1D-массив к 2D-массиву?
Подробнее здесь:
https://stackoverflow.com/questions/787 ... d-2d-array