C# 如何获取双dim阵列的所有行

C# 如何获取双dim阵列的所有行,c#,unity3d,C#,Unity3d,编辑: 你好,我有一个网格 Vector2[][] grid; 我想得到那些值 就像字典里的一样 Vector2.up => [[0][1],[0][2],[0][3],[0][4],[0][5]] Vector2.left=> [[1][0],[2][0],[3][0],[4][0],[5][0]] Vector2.right=> [[1][6],[2][6],[3][6],[4][6],[5][6]] Vector2.down=> [[6][1],[6][2],[

编辑:

你好,我有一个网格

Vector2[][] grid;
我想得到那些值

就像字典里的一样

Vector2.up => [[0][1],[0][2],[0][3],[0][4],[0][5]]
Vector2.left=> [[1][0],[2][0],[3][0],[4][0],[5][0]]
Vector2.right=> [[1][6],[2][6],[3][6],[4][6],[5][6]]
Vector2.down=> [[6][1],[6][2],[6][3],[6][4],[6][5]]
我正在这样做:

void GetSpawnablePosition() {
        Vector2[] coordX = { Vector2.up, Vector2.down };
        Vector2[] coordY = { Vector2.left, Vector2.right };
        for (int i = 0; i < coordX.Length; i++)
        {
            Vector2[] newArray = new Vector2[enemyGrid.grid[0].Length - 2];
            if (coordX[i] == Vector2.up)
                System.Array.Copy(enemyGrid.grid[0], 1, newArray, 0, enemyGrid.grid[0].Length - 2);

            if (coordX[i] == Vector2.down)
                System.Array.Copy(enemyGrid.grid[enemyGrid.grid[0].Length - 1], 1, newArray, 0, enemyGrid.grid[0].Length - 2);

            spawnablePosition.Add(coordX[i], newArray);
        }
        for (int i = 0; i < coordY.Length; i++)
        {
            Vector2[] newArray = new Vector2[enemyGrid.grid.Length - 2];

            if (coordY[i] == Vector2.right)
                System.Array.Copy(enemyGrid.grid, 1, newArray, 0, enemyGrid.grid.Length - 2);

            if (coordY[i] == Vector2.left)
                System.Array.Copy(enemyGrid.grid, enemyGrid.grid.Length - 1, newArray, 0, enemyGrid.grid.Length - 2);

            spawnablePosition.Add(coordY[i], newArray);
        }

        Debug.Log(spawnablePosition);
    }
void GetSpawnablePosition(){
Vector2[]coordX={Vector2.up,Vector2.down};
Vector2[]坐标={Vector2.left,Vector2.right};
for(int i=0;i
但是我得到了
ArgumentException:length
,我知道我的第二个for可能已经坏了,我正在尝试找到一个好方法来完成它。。。但我现在总是失败


难道没有一个最简单的方法来完成我的任务吗,因为真的,我很困惑,我看到了Linq,但是unity显然不能使用它?(我是使用Systen.Linq添加的)但是当我使用array.Where()时,它会显示错误。

内存/效率是一个因素吗?如果没有,您可以像您描述的那样循环,然后创建一个新数组,复制元素。如果使用非常大的数组或大小相当大的对象等执行此操作,则可以将引用复制到新数组中,以避免复制数据本身(如果是指针)。你能再解释一下你尝试了什么(特别是循环)以及为什么不能得到第一行或最后一行吗?我找到了一种方法,但我将数组从Vector2[,]更改为Vector2[][]实际上有什么不同?这里有一个链接,指向这个问题的位置:谢谢,所以操纵锯齿状数组更容易,对吗?我想要创建的数组是统一的,但是“为什么不能获取第一行或最后一行?”中的问题是,我不知道如何在二维数组中正确导航。例如,如果我想得到锯齿数组的所有第一行,语法是什么?我检查了这个,它看起来很复杂,锯齿状数组很容易理解