C# 复制多维数组的子部分
在处理(基于java的语言)方面,我可以做到这一点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#区分了锯齿状数组([[])和多维数组([,]): 锯齿状阵列: 这应该是可能的;每个数组元素本身就是一个数组 多维数组: 在这里,您必须
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();