Вытащить переменную из if за его пределы
Имеется простенькая конструкция:
if (x==5)
{
y=6
}
Console.WriteLine(y) // ошибка
Мне очень важно вытащить значение “y” конкретно из-под if, вне ее я могу только объявить, но значение нужно под if
Как это можно сделать? Уже все перепробовал(
Ответы (1 шт):
Вижу, что у вас уже все получилось, но я добавлю объяснение происходящему.
Дело в том, что если случится так, что y не будет равно 5, то выводить в консоль будет нечего, так как y на тот момент будет "ничем". Технически внутри этой переменной может оказаться что угодно, что лежало в том участке оперативной памяти, которое ей выделено при объявлении. То есть можно получить непредсказуемый результат. И чтобы защитить вас от подобного рода примитивных непредсказуемостей, компилятор запрещает вам использовать переменную с неприсвоенным значением на основе анализа вашего кода.
Есть несколько способов устранить эту неприятность:
присвоить ей что-нибудь при объявлении
int y = 0; int x = 5; if (x==5) { y = 6; } Console.WriteLine(y);использовать переменную внутри условного оператора
int y; int x = 5; if (x==5) { y = 6; Console.WriteLine(y); }Сделать ветвление условного оператора так, чтобы значение присваивалось в любом случае
int y; int x = 5; if (x==5) { y = 6; } else { y = 0; } Console.WriteLine(y);Способ для тех, кто знаком с исключениями: бросить исключение
int y; int x = 5; if (x==5) { y = 6; } else { throw new Exception("x не равно 5!"); } Console.WriteLine(y);