Изменение массива в функции в C#
Параметр int[] указывает на те же ячейки, что и переменная вызывающего кода. Запись по индексу внутри функции меняет массив снаружи:
Запишем функцию, которая обнуляет первый элемент, и проверим результат после вызова:
void ZeroFirst(int[] nums)
{
nums[0] = 0;
}
int[] data = [1, 2, 3];
ZeroFirst(data);
Console.WriteLine(data[0]); // prints 0
Если внутри функции параметру присвоить новый массив, изменится только локальное имя параметра. Внешняя переменная по-прежнему указывает на старый массив:
void Replace(int[] nums)
{
nums = [9, 9, 9];
}
int[] data = [1, 2, 3];
Replace(data);
Console.WriteLine(data[0]); // prints 1
Определите, не запуская код, что выведется в консоль:
void Mark(int[] nums)
{
nums[1] = 9;
}
int[] data = [4, 5, 6];
Mark(data);
Console.WriteLine(data[1]);
Определите, не запуская код, что выведется в консоль:
void Reset(int[] nums)
{
nums = [0, 0, 0];
}
int[] data = [4, 5, 6];
Reset(data);
Console.WriteLine(data[0]);