通过循环回到数组的开头来避免IndexOutOfRangeException

时间:2014-03-21 13:16:44

标签: c#

我有一个数组[4,4],我正在循环并打印值。

 trainingpatterns.array = new int[4, 4];
   for (int i = 0; i < 4; i++)
        {
               var element1 = x + array.coordinates[0];

                var element2 = x + array.coordinates[2];

                var element3 = x + array.coordinates[4];

                var element4 = x + array.coordinates[6];

            for (int j = 0; j < 4; j++)

            {
               var element1 = y + array.coordinates[1];

                var element2 = y + array.coordinates[3];

                var element3 = y + array.coordinates[5];

                var element4 = y + array.coordinates[7];





   Console.WriteLine(trainingpatterns.array[element2, element6]);

但是我的循环要求我查看索引。因此,当它到达[5,4]时,将抛出异常。

我想要做的是,如果x值超出界限,它将循环回到开始。因此,例如[5,4]将打印[0,4]或[6,4]将打印[2,4]。

我尝试过使用try catch但是我不能让所有值都具有通用功能。

谢谢。

1 个答案:

答案 0 :(得分:2)

我怀疑你只想使用%运算符:

int length0 = inputArray.GetUpperBound(0);
int length1 = inputArray.GetUpperBound(1);
...

var value = inputArray[x % length0, y % length1];

请注意,包装负数,但a % b的范围为(-b, +b),而您需要[0, +b)。考虑到这一点有点长,但如果你需要,请告诉我。如果您的索引值始终为非负值,则无需担心。