我需要在C#中创建2D数组

时间:2010-10-07 12:37:44

标签: c# .net arrays multidimensional-array

我需要创建2D锯齿状数组。想想一个矩阵。行数是已知的,列数是未知的。例如,我需要创建10个元素的数组,其中每个元素的类型为string []。我为什么需要那个?列数是未知的 - 此函数必须简单地执行分配并将数组传递给其他函数。

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
}

更新2

我正在考虑使用List,但我需要对行和列进行索引访问。

3 个答案:

答案 0 :(得分:8)

return new string[numRows][];

答案 1 :(得分:5)

无法完成。但是你可以这样做:

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

这使你能够在第二个角度拥有灵活数量的物体。

答案 2 :(得分:2)

你可以写:

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

这将产生null元素的2D数组。如果要使用非空项填充数组,则需要编写:

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

需要指定矩阵每行的列数。如果您事先不知道,可以。

  1. 将矩阵项保留为未初始化,并在知道其大小时填充它们。
  2. 使用固定数字,为您提供足够的空间以容纳最大尺寸。
  3. 避免使用数组,并按照其他人的建议使用List<>
  4. 希望这有帮助。