Если это только для строк и необходим перенос по кругу, я бы предложил использовать str.Substring(0,shift)
и добавить его к str.Substring(shift)
(не пытайтесь заново изобретать weel) (некоторая информация о методе подстроки: String.Substring )
в противном случае причина, по которой он не работает, заключается в том, что вы сохранили только первое значение массива вместо всех значений, которые вы хотите сместить.
Не сохраняйте только первое значение в массиве
var x = strArray[0];
вместо этого используйте
string[] x = new string[shift];
for (int i = 0; i < shift; i++)
{
x[i] = strArray[i];
}
, чтобы собрать все значения, которые необходимо добавить в конец.
РЕДАКТИРОВАТЬ: забыл сдвиг
Сдвиг старых данных влево
for (int i = 0; i < strArray.Length-shift; i++)
{
strArray[i] = strArray[i+shift];
}
И заменить
strArray[strArray.Length - shift] = x;
на
for(int i = 0; i < x.Length; i++){
int newlocation = (strArray.Length - shift)+i;
strArray[newlocation] = x[i];
}
также заменит цикл печати для
Console.WriteLine(string.Join(" ", strArray));
, что упрощает его и делает его одной строкой вместо трех строк кода.
(также документы для функции Join string.join )