在Processing(基于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];
b是一维数组,其值为2和5.它采用数组a的第2行中的数组。
matlab语法将是
b = a(3,:);
c#有没有等价物?我似乎无法找到任何东西,但似乎是一个非常有用和明显的功能。
由于
答案 0 :(得分:3)
C#有multidimensional arrays,但它也有数组数组(也称为jagged arrays)。第二种形式是你所追求的:
// 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];
如果手头有多维数组,则需要手动复制。
答案 1 :(得分:1)
C#区分锯齿状数组([][]
)和多维数组([,]
):
Jagged Arrays:
这应该是可能的;每个数组元素本身就是一个数组。
多维数组:
在这里,你必须逐个元素地自己进行复制。
答案 2 :(得分:1)
除了其他答案之外:如果您真的想要副本,即您不希望b[0] = 42;
更改a[2][0];
,请执行以下操作:
int [] b = (int[])a[2].Clone();