Изменение внешней переменной в C#
Число, переданное параметром, копируется. Изменение параметра не меняет переменную снаружи:
void Set(int bbb) {
bbb = 2;
}
int aaa = 1;
Set(aaa);
Console.WriteLine(aaa); // prints 1
Строка в параметре тоже передается как значение для присваивания параметру. Новая строка внутри функции не подменяет внешнюю переменную:
void Set(string text) {
text = "b";
}
string line = "a";
Set(line);
Console.WriteLine(line); // prints a
Локальная функция без параметра может изменить переменную снаружи: внутри функции имя ссылается на внешнюю переменную программы. Так работает захват внешней локальной переменной локальной функцией:
int num = 1;
void Change() {
num = 2;
}
Change();
Console.WriteLine(num); // prints 2
Захват не создает вторую переменную с тем же
именем. Функция работает с той же num,
что объявлена снаружи:
int num = 1;
void Change() {
num = 2;
Console.WriteLine(num); // prints 2
}
Change();
Console.WriteLine(num); // prints 2
Расскажите, каким будет результат выполнения кода:
void Set(string text) {
text = "b";
}
string line = "a";
Set(line);
Console.WriteLine(line);
Расскажите, каким будет результат выполнения кода:
int score = 10;
void AddFive() {
score = score + 5;
}
AddFive();
Console.WriteLine(score);