2011-10-02 2 views
2

Je fais un tableau 2D basique en C# et j'ai un peu de confusion.Confusion tableau/boucle C# vraiment basique

Je suis beaucoup plus habitué à travailler avec des tableaux basés sur 1, donc des tableaux basés sur 0 me gâchent la tête si vous voyez ce que je veux dire.

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)); 
    } 
} 

Donc, il me dit que je suis hors des limites de la matrice?

Si le tableau est de

0-15, 0-999

devrait-il pas une boucle de 0-15, le travail 0-999?

Répondre

10

Ce n'est pas le cas. 999 est la longueur du tableau. Ainsi, c'est de 0 à 998, et quand vous bouclez dessus, vous devriez avoir l'habitude d'utiliser «moins de» plutôt que «inférieur ou égal» - alors il aura tendance à sortir correctement.

+0

Oh, donc c'est 15 éléments plutôt que 0-15? Merci, c'est logique maintenant. –

7

Vous avez 15 et 999 éléments, mais comme les tableaux sont indexés 0, cela signifie qu'ils s'exécutent de 0-14 et 0-998, respectivement.