Вопрос по .net, multidimensional-array, arrays, default-value, c# – Как инициализировать многомерный массив с другим значением по умолчанию

11

Я пытаюсь инициализировать 2-мерный массив целочисленных значений с -1. Когда я создаю новый массив, он автоматически заполняется 0. Я знаю, что я могу сделать это с 2 для циклов, но я предполагаю, что должен быть какой-то способ сделать это во время сборки массива (поэтому я ненужно пройти два раза), чтобы вместо 0 было вставлено указанное значение. Является ли это возможным? Если нет во время первоначального построения массива, есть ли другой способ сохранения времени или кода, или я застрял с 2 для циклов?

Насколько велики эти массивы? Reed Copsey
Размер массива основан на вводе функции, которая его создает, я забыл упомянуть об этом. Прямая инициализация исключена. kovike

Ваш Ответ

2   ответа
20

Попробуйте что-то вроде этого:int[,] array2D = new int[,] { { -1 }, { -1 }, { -1 }, { -1} };

или с измерениемint[,] array2D = new int[4,2] { { -1,-1 }, { -1,-1 }, { -1,-1 }, {-1,-1} };

То же самое от меня, я забыл упомянуть важные детали в исходном вопросе. kovike
Не уверен, почему -1 - это идеально подходит для небольших 2D-массивов, и лучший вариант в этом случае. +1 от меня ... (хотя это довольно быстро, если массивы большие) Reed Copsey
Тот'Хорошо, @ReedCopsey хорошо ответил на ваш вопрос. TravellingGeek
11

циклы, скорее всего, лучший подход, если массив не достаточно мал, чтобы инициализировать непосредственно в коде.

Если ты'используязубчатый массив, вы можете инициализировать первый под-массив, а затем использоватьArray.Copy скопировать эти значения друг в друга под-массив. Для этого по-прежнему потребуется одна итерация по первому подмассиву и один цикл по N-1 внешним массивам, но операция копирования будет быстрее, чем циклы.

м действительно с использованием многомерного массива. Ну, я думаю, мне придется идтистарая школа' кстати тогда. kovike

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