如何从 C# 中的嵌套循环写入多维数组?

Posted

技术标签:

【中文标题】如何从 C# 中的嵌套循环写入多维数组?【英文标题】:How to write to multidimensional array from nested loop in C#? 【发布时间】:2020-07-03 15:44:38 【问题描述】:

我是 C# 新手。我在 Unity 中编写了一个代码,它创建了多个 (9, 3x3) 多维数据集,并且我使用了 3 个嵌套的 fori 循环。 创建多维数据集时,我需要将它们的 ID、x、y、z、位置保存在数组中。我尝试和托盘但不能 了解如何将此值保存到数组。有人可以帮我弄这个吗? 谢谢,祝您有愉快的一天。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MakeCube01 : MonoBehaviour

    public GameObject cublet;

    public int cubeID = 0;
    int rowNum = 3; //x
    int columnNum = 3; //y
    int layerNum = 3; //z
    int numberOfCubes;
    //int structureDimension = 3;
    public int[,] cubeStartPositions; 

    // Start is called before the first frame update
    void Start()
    
        numberOfCubes = rowNum * columnNum * layerNum;
        cubeStartPositions = new int[numberOfCubes, 4];   //row cube, column ID,x,y,z
        for (int startX = 0; startX < rowNum; startX++)
        
            for (int startY = 0; startY < columnNum; startY++)
            
                for (int startZ = 0; startZ < layerNum; startZ++)
                
                    Instantiate(cublet, new Vector3(startX, startY, startZ), new Quaternion(0, 0, 0, 0));

                    //write in array cubeId, x, y, z.
                    cubeStartPositions =    //????

                    Debug.Log("number of cubes:" + numberOfCubes + " ID:" + cubeID + " x:" + startX + " y:" + startY + " z:" + startZ);
                    cubeID++;
                
            
               
    

【问题讨论】:

你的数组是二维的。 3 个索引你想要什么? 感谢它工作正常,与 Java 略有不同。谢谢你,祝你有美好的一天。 【参考方案1】:

您想要一个具有三个维度的数组,但您只定义了两个维度。 你需要像这样定义你的数组,用两个逗号(分隔 3 个索引):

public int[,,] cubeStartPositions;

然后像这样初始化它

cubeStartPositions = new int[x, y, z];   

【讨论】:

并像这样分配值:cubeStartPositions[x,y,z] = foobar;【参考方案2】:

您需要创建 3 维数组而不是 2 个新的 int[x,y,z]

【讨论】:

感谢它工作正常,与 Java 略有不同。谢谢你,祝你有美好的一天。

以上是关于如何从 C# 中的嵌套循环写入多维数组?的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌套的每个循环构建多维数组?

C#多维数组与嵌套数组

如何理解JS多维数组

带有嵌套循环的多维数组Javascript

C# 中的多维关联数组

带有嵌套for循环的Javascript多维数组-无法正常工作