Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csPmScViC 178 of 436 menu
◀ ▶

Переменная внутри условия в C#

Пусть для простоты условие всегда истинно:

if (true) { }

Рассмотрим такой код:

if (true) { int res = 1; } Console.WriteLine(res); // error

В переменную res должно записаться значение 1, но программа не собирается. Переменные, объявленные внутри фигурных скобок, видны только внутри этих скобок и не видны снаружи.

Если переменная объявлена снаружи скобок, она видна и внутри блока, и снаружи:

int res; if (true) { res = 1; } Console.WriteLine(res); // prints 1

В следующем примере в каждой ветке объявляют свою res, а снаружи пытаются вывести имя res:

int num = 5; if (num >= 0) { int res = 1; } else { int res = 2; } Console.WriteLine(res); // error

Снова ошибка сборки: ни одна из переменных res не выходит за пределы своей ветки. Объявим одну переменную снаружи условия и запишем в нее значение внутри веток:

bool test = true; int res; if (test) { res = 1; } else { res = 2; } Console.WriteLine(res); // prints 1

В C# нельзя повторно объявить имя внутри блока, если такое имя уже занято внешней локальной переменной. Вместо второго объявления нужно менять уже существующую переменную присваиванием:

int res = 1; if (true) { res = 2; } Console.WriteLine(res); // prints 2

Автор приведенного ниже кода хотел выполнить проверку возраста на достижение 18 лет. Код не работает. Исправьте ошибку автора:

int age = 17; if (age >= 18) { bool adult = true; } else { bool adult = false; } Console.WriteLine(adult);

Автор кода объявил adult снаружи условия, но внутри веток снова объявил локальные adult. Исправьте код так, чтобы значение записывалось во внешнюю переменную:

int age = 17; bool adult; if (age >= 18) { bool adult = true; } else { bool adult = false; } Console.WriteLine(adult);
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить