循环迭代器偏移量

时间:2017-02-24 13:39:14

标签: c# for-loop

我们说我有4个项目。

当我访问第一个索引时,我还想访问偏移量-1(在这种情况下,它会循环到3)

for(int i = 0; i < array.Length; i++)
{
  int item = array[i];

  int offset = 0;
  if (i == 0)
  {
    offset = array.Length -1;
  }
  else 
  {
    offset = i -1;
  }
  int offsetItem = array[offset];
}

有更优雅的方法来实现这一目标吗?我一直在考虑使用模运算符,但我不太了解它是否足以知道它是否是解决方案。

2 个答案:

答案 0 :(得分:2)

你不能在循环中定义变量i,因为我已经定义了它。

  for(int i = 0; i < array.Length; i++) {
           int j = array[i];  
           int offset = (j == 0)?(array.Length -1):( i -1);    
           int offsetItem = array[offset];
  }

答案 1 :(得分:1)

是的,有。将数组的长度添加到索引中,并使用余数运算符,如下所示:

int offset = (i-1+array.Length) % array.Length;