Время жизни переменной в C#
Время жизни переменной - это период, когда для нее выделена память и имя имеет смысл. У локальной переменной время жизни совпадает с областью видимости: от объявления до конца блока. Пример:
{
int num = 1;
Console.WriteLine(num); // prints 1
}
Console.WriteLine(num); // error - lifetime ended
Счетчик цикла живет, пока выполняется цикл. После выхода из цикла имя счетчика исчезает:
for (int i = 0; i < 3; i++) {
Console.WriteLine(i);
}
Console.WriteLine(i); // error
Переменные локальной функции существуют только во время вызова. После возврата из функции их имена недоступны:
void Show() {
int num = 5;
Console.WriteLine(num); // prints 5
}
Show();
Console.WriteLine(num); // error
Переменная на верхнем уровне программы живет до конца выполнения всей программы. Локальная функция без параметра может читать и менять такую переменную, пока функция выполняется:
int total = 0;
void Add(int value) {
total = total + value;
}
Add(3);
Add(4);
Console.WriteLine(total); // prints 7
Расскажите своими словами, чем время жизни локальной переменной в блоке отличается от времени жизни переменной на верхнем уровне программы.