Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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#_Multidimensional Array - Fatal编程技术网

C# 复制多维数组的子部分

C# 复制多维数组的子部分,c#,multidimensional-array,C#,Multidimensional Array,在处理(基于java的语言)方面,我可以做到这一点 int [][] a = new int[3][2]; for (int i = 0; i < 3; i++) { a[i][0] = i; a[i][1] = i+3; } int [] b = a[2]; c#是否有任何等价物?我似乎找不到任何东西,但似乎是一个相当有用和明显的功能 感谢C#区分了锯齿状数组([[])和多维数组([,]): 锯齿状阵列: 这应该是可能的;每个数组元素本身就是一个数组 多维数组: 在这里,您必须

在处理(基于java的语言)方面,我可以做到这一点

int [][] a = new int[3][2];
for (int i = 0; i < 3; i++)
{
  a[i][0] = i;
  a[i][1] = i+3;
}
int [] b = a[2];
c#是否有任何等价物?我似乎找不到任何东西,但似乎是一个相当有用和明显的功能

感谢

C#区分了锯齿状数组(
[[]
)和多维数组(
[,]
):

锯齿状阵列:

这应该是可能的;每个数组元素本身就是一个数组

多维数组:

在这里,您必须自己一个元素一个元素地进行复制。

C#有,但它也有数组数组(也称为数组)。第二种形式是您所追求的:

// This is a jagged array. It has 3 rows, each of which is an int[] in its own right.
// Each row can also have a different number of elements from all the others, so if
// a[i][N] is valid for some i and N, a[x][N] is not necessarily valid for other x != i
var a = new int[3][];

// To populate the array you need to explicitly create an instance for each sub-array
for (int i = 0; i < 3; i++)
{
      a[i] = new[] { i, i + 3 };
}

// And now this is possible:
var b = a[2];
//这是一个锯齿状数组。它有3行,每行本身就是一个int[]。
//每一行也可以有不同于所有其他行的元素数,因此如果
//[i][N]对某些i和N有效,而[x][N]对其他x不一定有效我
var a=新整数[3][];
//要填充数组,需要为每个子数组显式创建一个实例
对于(int i=0;i<3;i++)
{
a[i]=新[]{i,i+3};
}
//现在这是可能的:
var b=a[2];

如果您手头有一个多维数组,则需要手动进行复制。

除了其他答案之外:如果您确实想要一个副本,即您不想要
b[0]=42更改
a[2][0],然后执行以下操作:

int [] b = (int[])a[2].Clone();

啊,我明白我错在哪里了。在开始创建锯齿状数组时,我在锯齿状数组中指定了两个大小,这产生了一个编译器错误。我习惯于两者兼而有之。谢谢
int [] b = (int[])a[2].Clone();