C#循环数组索引值从索引中返回到Array的开头

我想创建一个如下所示的程序(c#btw):

int[] arr = new int[9] //some code that puts values 1, 0, or 2 in each array element for(int i = 0; i < arr.Length; i++) { if (arr[i] == arr[i + 3]) { return true; } } 

因此,对于数组中的每个值,我正在应用一个公式,该公式使用该值执行某些操作,并在其前面执行值3索引。 当然,一旦i + 3> 8,这会遇到超出范围的exception。

我想要做的是,如果所需的索引超出范围,则将索引值循环回到数组的开头。 所以,在长度为9的数组中,最后一个索引是8,如果在给定的循环上i = 7,而i + 3则= 10,我希望i + 3’变成’,以任何方式,1,和那么当i = 8,而i + 3 = 11时,我希望i + 3变为2。

因此,被评估的索引对将类似于:

我,我+ 3

0 3

1 4

2 5

3 6

4 7

5 8

6 0

7 1

8 2 2

我怎么能这样做?

谢谢你的帮助。

像这样使用模运算符:

 if (arr[i] == arr[(i + 3) % arr.Length]) { return true; } 

您可以在if语句中尝试以下表达式。

 arr[i] == arr[(i + 3) % arr.Length]; 

%运营商

将一个表达式的值除以另一个表达式的值,并返回余数。