嵌套循环不迭代

本文关键字:迭代 嵌套循环 | 更新日期: 2023-09-27 18:11:45

在我的代码中,我有一个嵌套循环,它不迭代,除非if语句总是发生,无论什么条件。如果没有if语句,for循环中迭代循环的那部分代码将变得不可访问。无论我怎么尝试,我都无法让内循环迭代。

    class Map
    {
        public int Width { get; set; }
        public int Height { get; set; }
        public Vector2[] positions = new Vector2[500*500];
        private GroundVoxel[,] map = new GroundVoxel[500, 500];
        private Vector2 voxelPosition = new Vector2(0,0);
        private static int sizeX = 499, sizeY = 499, airLevel = 425;
        private int positionX = 0, positionY = 0, vectorNumber = 0;
        public Map()
        {
        }
        public Vector2[] Initialize()
        {
            for (int i = 0; i <= sizeY; i++)
            {
                for (int j = 0; j <= sizeX; j++) <-- This does not iterate.
                {
                    map[positionX, positionY] = new GroundVoxel(voxelPosition);
                    voxelPosition.X += 80;
                    positions[vectorNumber] = voxelPosition;
                    vectorNumber += 1;
                    if (j == sizeX) <-- This always executes even though j != sizeX.
                    {
                        break;
                    }
                }
                voxelPosition.Y += 80;
                voxelPosition.X = 0;
            }
            return positions;
        }
    }
}

嵌套循环不迭代

您必须使用完全限定名来引用静态类成员变量,如sizeXsizeY
这里有一篇关于该主题的文章。

希望这对你有帮助!

我想我们需要更多的代码。我已经将您的代码复制到基本的winforms测试应用程序中,并且我的两个循环都按照预期进行迭代。

我不熟悉XNA或什么是"VoxelPosition",但我认为你这里有一个潜伏的错误:

voxelPosition.X += 80;
positions[vectorNumber] = voxelPosition;

你只是将同一个指针存储在一个非常大的数组中——所有的项都指向同一个对象。

你需要在每次循环中声明另一个对象来存储单独的vector条目。

希望这有帮助?