Основная проблема заключается в том, что вы помещаете массивы внутри строки. ToString()
в массиве приведет к строке, описывающей тип, а не к строке его значений. Вам необходимо объединить эти массивы. Вы можете создать локальную функцию, чтобы ее было удобнее использовать:
string getNums (int start, int end) =>
string.Join("", numbers[start..end]);
В остальном ваша индексация включается с обеих сторон. Но согласно Microsoft :
Диапазон определяет начало и конец диапазона. Диапазоны являются исключительными, то есть конец не входит в диапазон.
Исключение означает не это. c -sharpcorner делает это лучше:
Оператор Range .. определяет начало (включающее) и конец (исключение) диапазона.
Думаю, у них была причина для этого, но с моей точки зрения это очень неожиданный выбор.
Тем не менее, имея это в виду, вы можете реализовать локальную функцию следующим образом:
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
string getNums (int start, int end) =>
string.Join("", numbers[start..end]);
return $"({getNums(0,3)}) {getNums(3,6)}-{getNums(6,10)}";