Мне нужно создать 2D массив в C # - PullRequest
2 голосов
/ 07 октября 2010

Мне нужно создать 2D зубчатый массив.Подумайте о матрице.Количество строк известно, количество столбцов неизвестно.Например мне нужно создать массив из 10 элементов, где тип каждого элемента строка [].Зачем мне это?Количество столбцов неизвестно - эта функция должна просто выполнить распределение и передать массив какой-либо другой функции.

string[][] CreateMatrix(int numRows)
{
 // this function must create string[][] where numRows is the first dimension.
}

ОБНОВЛЕНИЕ

У меня есть фон C ++.В C ++ я написал бы следующее (не обращая внимания на синтаксис)

double ** CreateArray()
{
 double **pArray = new *double[10]() // create 10 rows first
}

UPDATE 2

Я думал об использовании List, но мне нужно иметь индексированный доступ к строкам и столбцам.1011 *

Ответы [ 3 ]

8 голосов
/ 07 октября 2010

return new string[numRows][];

5 голосов
/ 07 октября 2010

Не может быть сделано.Однако вы можете сделать что-то вроде этого:

List<List<string>> createMatrix(int numRows)
{
     return new List<List<string>>(numRows);
}

Это позволит вам иметь гибкое количество объектов во втором измерении.

2 голосов
/ 07 октября 2010

Вы можете написать:

string[][] matrix = new string[numRows][];

, и это приведет к созданию двумерного массива null элементов. Если вы хотите заполнить массив ненулевыми элементами, вам нужно написать:

for (int row = 0; row < numRows; row++)
{
    matrix[row] = new string[/* col count for this row */];
}

Вам нужно , чтобы указать количество столбцов для каждой строки матрицы. Если вы не знаете об этом заранее, вы тоже можете.

  1. Оставьте элементы матрицы незаполненными и заполните их так, как вы знаете их размер.
  2. Используйте фиксированный номер, который даст вам достаточно места для максимально возможного размера.
  3. Избегайте массивов и используйте List<>, как предлагают другие здесь.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...