C#:1d数组到2d数组
本文关键字:数组 2d 1d | 更新日期: 2023-09-27 18:28:23
我有三个1D字符串数组A、B和C,每个数组有20个元素。
我想创建一个由这些1D阵列A、B和C组成的2D[2,19]阵列d。
我想我可以这样做:
D[0,]=A;
D[1,]=B;
D[2,]=C;
但是VS给了我语法错误。我如何在不重复的情况下做到这一点?
多维数组和锯齿状数组之间存在差异。你已经使用了多维,但你的分配就像一个锯齿状的阵列。
因此:
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+多维+对比+锯齿状
您需要使用一个循环并逐个设置每个元素:
for(int i = 0; i < 20; i++)
{
D[0, i] = A[i];
D[1, i] = B[i];
D[2, i] = C[i];
}
CCD_ 1应该至少是CCD_ 2以保持这些值。
如果你想在没有for循环的情况下完成这项工作,就像Selman22建议的那样,你的另一个选择是使用锯齿状数组或数组数组。这样做:
int[][] jaggedArray = new int[3][];
jaggedArray[0] = A[i];
jaggedArray[1] = B[i];
jaggedArray[2] = C[i];
这些可以用两个括号访问,例如jaggedArray[i][j]。
请注意,与多维数组相比,像Length这样的概念在锯齿状数组中的作用非常不同。我建议您在此处查看MSDN文档:http://msdn.microsoft.com/en-us/library/2s05feca.aspx
如果您想使用List(正如您可能应该的那样-List对.NET中的几乎所有用例都更好),您可以使用List<列表<T>>,其访问方式与锯齿状数组相同。
执行数组数组:
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]);
}
}