public static void Main()
Console.WriteLine("\nWraping any numbers");
for(var i = -6; i < 7; i++)
var idx = ArrayUtils.WrapIndex(i, items);
Console.WriteLine(i + " -> " + idx);
Console.WriteLine("\ngoing backward with step size 1");
for(var i = 10; i > 0; i--)
ArrayUtils.Backward(ref current, items, 1);
Console.WriteLine("current =" + current);
Console.WriteLine("\ngoing forward with step size 3");
for(var i = 10; i > 0; i--)
ArrayUtils.Forward(ref current, items, 3);
Console.WriteLine("current =" + current);
public static class ArrayUtils
public static void Forward<T>(ref int currentIndex, T[] array, int amount)
currentIndex = WrapIndex(currentIndex + amount, array);
public static void Backward<T>(ref int currentIndex, T[] array, int amount)
currentIndex = WrapIndex(currentIndex - amount, array);
public static int WrapIndex<T>(int newIndex, T[] array)
var length = array.Length;
return ((newIndex % length) + length) % length;