C#:1d数组到2d数组

时间:2014-10-29 19:23:13

标签: c#

我有三个1D字符串数组A,B和C,每个都有20个元素。

我想创建一个2D [2,19]阵列D,由这些1D A,B和C组成。

我以为我可以这样做:

D[0,]=A;
D[1,]=B;
D[2,]=C;

但是VS给了我语法错误。如何在不迭代的情况下做到这一点?

4 个答案:

答案 0 :(得分:2)

多维数据库和锯齿状数组之间存在差异。您使用过多维数据库,但是您正在分配像锯齿状数组。

所以:

TElement[] A = //
TElement[] B = //
TElement[] C = //

var D = new TElement[3][];
D[0] = A;
D[1] = B;
D[2] = C;

访问元素:

var elem = D[0][10];

更多信息:http://forums.asp.net/t/1278141.aspx?arrays+multidimensional+versus+jagged

答案 1 :(得分:1)

您需要使用循环并逐个设置每个元素:

for(int i = 0; i < 20; i++)
{
   D[0, i] = A[i];
   D[1, i] = B[i];
   D[2, i] = C[i];
}

D至少应[3,20]来保存这些值。

答案 2 :(得分:1)

如果你想在没有for循环的情况下这样做,就像Selman22建议的那样,你的另一个选择就是使用锯齿状数组或数组数组。这样做是这样的:

int[][] jaggedArray = new int[3][];

jaggedArray[0] = A[i];
jaggedArray[1] = B[i];
jaggedArray[2] = C[i];

可以使用两个括号访问它们,例如jaggedArray [i] [j]。

请注意,与多维数组相比,像“长度”这样的概念对于锯齿状数组的工作方式有很大不同。我建议在这里查看MSDN文档:http://msdn.microsoft.com/en-us/library/2s05feca.aspx

如果你想使用List,(你可能应该 - 在几乎所有.NET用例中List都更好)你可以使用List&lt;列表与LT; T&gt;&gt;,可以与锯齿状阵列相同的方式访问。

答案 3 :(得分:0)

做一个数组数组:

 string[] a = new string[3] {"A","B","C"};
 string[] b = new string[3] { "D", "E", "F" };
 string[] c = new string[3] { "G", "H", "I" };
 string[][] d = new string[3][];
 d[0] = a;
 d[1] = b;
 d[2] = c;
 for (int i = 0; i < d.Length; i++) {
     for (int j = 0; j < d[i].Length; j++) {
         MessageBox.Show(d[i][j]);
     }
 }