Условие простое(почти): есть массив, который мы задаём, и число, которое равно одному из элементов массива. При каждом получении(чтении(get)) этого числа, оно возвращает следующий элемент массива по индексу. Если элемент был в массиве последним, то следующий элемент будет первым в массиве.
А с присвоением(set) всё просто. Присваиваем число тому элементу, который бы вывелся при вызове get.
Если я всё правильно понимаю, то геттер будет таким
get
{
int res = nums[index];
index = index == nums.Length - 1 ? 0 : index + 1; // цикличность
return res;
}
а в сеттер такой
set
{
nums[index] = value;
}