如何从 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# 中的嵌套循环写入多维数组?的主要内容,如果未能解决你的问题,请参考以下文章