Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:从一维阵列到二维阵列_C# - Fatal编程技术网

C#:从一维阵列到二维阵列

C#:从一维阵列到二维阵列,c#,C#,我有三个一维字符串数组A、B和C,每个数组有20个元素 我想创建一个2D[2,19]阵列d,由这些一维阵列A、B和C组成 我想我可以这样做: D[0,]=A; D[1,]=B; D[2,]=C; 但是VS给了我语法错误。如何在不进行迭代的情况下执行此操作?您需要使用循环并逐个设置每个元素: for(int i = 0; i < 20; i++) { D[0, i] = A[i]; D[1, i] = B[i]; D[2, i] = C[i]; } for(int i=

我有三个一维字符串数组A、B和C,每个数组有20个元素

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

我想我可以这样做:

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

但是VS给了我语法错误。如何在不进行迭代的情况下执行此操作?

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

for(int i = 0; i < 20; i++)
{
   D[0, i] = A[i];
   D[1, i] = B[i];
   D[2, i] = C[i];
}
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]
以保持这些值。

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

for(int i = 0; i < 20; i++)
{
   D[0, i] = A[i];
   D[1, i] = B[i];
   D[2, i] = C[i];
}
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]
以保持这些值。

多维数组和锯齿数组之间存在差异。您已经使用了多维,但是您的赋值就像一个锯齿状数组

因此:

访问元素:

var elem = D[0][10];

更多信息:

多维数组和锯齿数组之间存在差异。您已经使用了多维,但是您的赋值就像一个锯齿状数组

因此:

访问元素:

var elem = D[0][10];

更多信息:

如果您想在不使用for循环的情况下执行此操作,如Selman22所建议的,您的另一个选择是使用锯齿阵列或阵列阵列。这是这样做的:

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

jaggedArray[0] = A[i];
jaggedArray[1] = B[i];
jaggedArray[2] = C[i];
可使用两个括号访问这些内容,例如jaggedArray[i][j]

请注意,与多维数组相比,对于锯齿数组,长度等概念的作用非常不同。我建议您在此处查看MSDN文档:


如果您想改用List(您可能应该这样做,-List对于.NET中的几乎所有用例都更好),您可以使用List>,它可以以与锯齿状数组相同的方式进行访问。

如果您不想像Selman22建议的那样使用for循环,那么您的另一个选择是使用锯齿状数组或数组数组。这是这样做的:

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

jaggedArray[0] = A[i];
jaggedArray[1] = B[i];
jaggedArray[2] = C[i];
可使用两个括号访问这些内容,例如jaggedArray[i][j]

请注意,与多维数组相比,对于锯齿数组,长度等概念的作用非常不同。我建议您在此处查看MSDN文档:

如果您想改为使用列表(您可能应该这样做-对于.NET中的几乎所有用例,列表都更好),您可以使用列表>,它可以以与锯齿数组相同的方式访问。

执行数组数组:

 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]);
     }
 }
string[]a=新字符串[3]{“a”、“B”、“C”};
字符串[]b=新字符串[3]{“D”、“E”、“F”};
字符串[]c=新字符串[3]{“G”、“H”、“I”};
字符串[][]d=新字符串[3][];
d[0]=a;
d[1]=b;
d[2]=c;
对于(int i=0;i
执行一组数组:

 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]);
     }
 }
string[]a=新字符串[3]{“a”、“B”、“C”};
字符串[]b=新字符串[3]{“D”、“E”、“F”};
字符串[]c=新字符串[3]{“G”、“H”、“I”};
字符串[][]d=新字符串[3][];
d[0]=a;
d[1]=b;
d[2]=c;
对于(int i=0;i
为什么要使用列表?如果不需要添加新元素-列表不是必需的-它会隐藏一个数组..因为列表的功能要多得多,性能影响也很小。比我聪明的男人在这里说:为什么要使用列表?如果不需要添加新元素-列表不是必需的-它会隐藏一个数组..因为列表的功能要多得多,性能影响也很小。比我更聪明的人:好吧,所以我明白我不能按维度定义多维数组维度?当然可以,但你需要在循环中按值对输入数组值进行赋值。好吧,我明白我不能按维度定义多维数组维度?当然可以,但您需要在循环中按值对输入数组值进行重新签名。