在C#中将2-d数组拆分为多个1-d数组

时间:2013-08-05 05:07:20

标签: c#

我有一个2-d int数组说

int[,] data = new int[N, numOfCol]; 

现在这也是长度为N的1-d数组的numOfCol数。正确吗?

假设numOfCol为3。

我们如何代表那些一维阵列?

data[,0] data[,1] and data[,2]在Visual Studio中给出了错误的语法。

3 个答案:

答案 0 :(得分:0)

您必须将数据结构更改为二维数组,但格式为

int[][] data = new int[max number of columns][]

您可以在这篇文章Multidimensional Array [][] vs [,]

中看到非常好的解释

答案 1 :(得分:0)

试试这个..

    for(int i =0;i<N;i++){
     //in each row

        for(int j=0;j<numOfCol;j++){
         //in each column

          var value = data[i,j]; //like data[0,0] data[0,1] data[0,2].... 
          //you have go through each row and column or directly if
          // you have data in 2nd row and 3rd column, you can write data[1,2]
        }
    }

答案 2 :(得分:0)

您的问题有点令人困惑,因为您的标题是关于拆分数组,而您的问题正文是关于声明数组的语法。

如果您想将2D数组拆分为锯齿状数组(即数组数组),请使用以下内容:

int[,] input = ...

int[][] output = Enumerable.Range(0, input.GetLength(0))
    .Select(x => Enumerable.Range(0, input.GetLength(1))
        .Select(y => input[x, y])
        .ToArray())
    .ToArray();

如果您要做的只是声明锯齿状数组,请参阅Garath's answer