Вложенные блоки в C#
Внутренний блок видит переменные внешнего блока.
В следующем примере num объявлена
во внешнем if и доступна во вложенном:
int age = 20;
if (age >= 18) {
string res = "adult";
if (age <= 23) {
Console.WriteLine(res); // prints adult
}
}
Переменная, объявленная во внутреннем блоке, снаружи не видна:
int age = 17;
string res;
if (age >= 18) {
if (age <= 23) {
string note = "18 to 23";
}
} else {
res = "under 18";
}
Console.WriteLine(note); // error
Чтобы записать текст во внешнюю res,
уберем лишние объявления внутри веток
и присвоим значение существующей переменной:
int age = 19;
string res;
if (age >= 18) {
if (age <= 23) {
res = "18 to 23";
} else {
res = "over 23";
}
} else {
res = "under 18";
}
Console.WriteLine(res); // prints 18 to 23
Автор кода не записывает строку во внешнюю
res. Исправьте ошибку:
int age = 17;
string res;
if (age >= 18) {
if (age <= 23) {
string res = "18 to 23";
} else {
string res = "over 23";
}
} else {
string res = "under 18";
}
Console.WriteLine(res);