简体   繁体   中英

Really basic C# array/loop confusion

I'm doing a basic 2D array in C# and I've got a bit of confusion.

I'm a lot more used to working with 1-based arrays, so 0-based arrays kind of mess up my head if you know what I mean.

blocks = new Block[15, 999];

for (int x = 0; x <= 15; x++)
{
    for (int y = 0; y <= 999; y++)
    {
        blocks[x, y] = new Dirt(terrainTexture, new Vector2(x * 16, y * 16));
    }
}

So it's telling me I'm out of bounds of the array?

If the array is from

0-15, 0-999

Shouldn't a loop from 0-15, 0-999 work?

It's not. 999 is the length of the array. Thusly, it's from 0-998, and when you loop over it, you should be in the habit of using "less than" rather than "less than or equal" -- then it will tend to come out right.

你有15和999个元素,但由于数组是0索引的,这意味着它们分别从0-14和0-998运行。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM