Проблема
Массив, который вы возвращаете, является новым массивом:
Посмотрите на вашу Reverse
функцию. Вы создаете новый массив с именем arrayToReturn
и возвращаете этот массив. Вы также никогда не изменяете исходный входной массив arrayToReverse
.
static int[] Reverse(int[] arrayToReverse) // this input array is never modified
{
int count = arrayToReverse.Length;
// ...
arrayToReturn = new int[count]; // Here is the new array
// ...
return arrayToReturn; // you return the new array
}
Теперь посмотрите, где вы вызвали Reverse
, в котором вы передали несколько сгенерированных чисел, но вы игнорируете возвращаемое значение функции, поэтому вы никогда не найдете что новый массив. Помните, что мы уже установили выше, что вы не изменяете элементы входного массива. Так что numbers
останется без изменений.
static void Main(string[] args)
{
int[] numbers = GenerateNumbers();
Reverse(numbers); // you ignored the return value of `Reverse`
PrintNumbers(numbers); // These are the original unreversed numbers
}
Исправить
Опция # 1 - Новая переменная для сохранения результата
Чтобы исправить это, сохраните массив, возвращенный из Reverse
в переменной и выведите эти числа.
static void Main(string[] args)
{
int[] numbers = GenerateNumbers();
int[] reversedNumbers = Reverse(numbers);
PrintNumbers(reversedNumbers);
}
Опция # 2 - Повторное использование той же переменной для сохранения результата
В этой опции вы просто отбрасываете исходный массив, беря новый массив обращенных чисел, возвращаемый из Reverse
и присваивающий его переменной numbers
. После этого присваивания numbers
будет ссылаться на обращенный массив, который был возвращен из Reverse
. Исходный массив потерян и забыт - в конце концов мусор собрал.
static void Main(string[] args)
{
int[] numbers = GenerateNumbers();
// repurpose the `numbers` variable to store the result.
numbers = Reverse(numbers);
PrintNumbers(numbers);
}