C# Не видит переменную после try...catch

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Всем привет!
Я уже соскучился, давно вопросов не задавал.

Есть такой код.

C#:
//Подготовка данных

//Если в переменной "strScheduler" дата, то преобразуем её в нужный формат.
    try
    {
    var mySchedule = Convert.ToDateTime(strScheduler);
    mySchedule = TimeZoneInfo.ConvertTimeToUtc(mySchedule);
    string scheduleTime = mySchedule.ToString("o");
    }
//Если в переменной "strScheduler" текст, то инициализируем переменную "cheduleTime" и в неё пишем значение из переменной "strScheduler"
    catch
    {
    string scheduleTime = strScheduler;
    }

//Тут другой индуский код

//Наш код для обработки подготовленных данных
//Если переменная "scheduleTime" не пустая, то её значение кидаем в проект
if (scheduleTime != "")
{
project.Variables["schedule_time"].Value = scheduleTime;
}
//Если переменная "scheduleTime" пустая, то в проекте ставим пустоту и выводим сообщение
else
{
    project.Variables["schedule_time"].Value = "";
    project.SendWarningToLog("", "Информация о доступе к видео не указана", true);
}
Так вот, какая проблема:
После catch, переменная "scheduleTime" пропадает. ЗенноПостер её переастаёт видеть и при выполнение появляется ошибка, что она отсутствует в текущем контексте. Пробовал и Finally добавлять, результат тот же.
Если мы только не закроем скобкой catch, то переменная видна будет, но по синтаксису это неправильно и все равно будет ошибка. Как решить, почему такое происходит. По идее значение должно сохранится во вне оператора.
При этом в VS тестировал, там вроде всё ок. Переменная за пределами try...catch видна.

Помогите)))
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
это называется область видимости переменой. Объяви переменную до трай кэтч
 
  • Спасибо
Реакции: K84084819 и Meteorburn

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
конечно пропадет, ты же задал её внутри блока catch
 
  • Спасибо
Реакции: Meteorburn

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
это называется область видимости переменой. Объяви переменную до трай кэтч
конечно пропадет, ты же задал её внутри блока catch
Ок, понял. Но если я её инициализирую до try, то он мне скажет, что вы уже используете её.
А мне надо, чтобы значение передавалась в трае или кетче и дальше в коде использовалось.
Как это сделать?)
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113
Всё-всё-всё. Решиил!
Спасибо!

C#:
string scheduleTime;
    try
    {
    var mySchedule = Convert.ToDateTime(strScheduler);
    mySchedule = TimeZoneInfo.ConvertTimeToUtc(mySchedule);
    scheduleTime = mySchedule.ToString("o");
    }
    catch
    {
    scheduleTime = strScheduler;
    }
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
//Если в переменной "strScheduler" дата, то преобразуем её в нужный формат.
string scheduleTime = null;
try
{
    var mySchedule = Convert.ToDateTime(strScheduler);
    mySchedule = TimeZoneInfo.ConvertTimeToUtc(mySchedule);
    string scheduleTime = mySchedule.ToString("o");
}
//Если в переменной "strScheduler" текст, то инициализируем переменную "cheduleTime" и в неё пишем значение из переменной "strScheduler"
catch
{
    scheduleTime = strScheduler;
}

//Тут другой индуский код
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)