Задать вопрос

Почему не видно переменную за пределами if в c#?

Добрый день всем!
Возникла проблема с видимостью переменной.
Для рассериализации массива сериализованного с помощью PHP использую библиотеку PHPSerializationLibrary.
Вот начало где подключаю её
public partial class mainForm : Form
{
   public Conversive.PHPSerializationLibrary.Serializer serializer;
   public mainForm()
        {
            InitializeComponent();
            serializer = new Conversive.PHPSerializationLibrary.Serializer();
        }
}

Дальше беру массив и кидаю его этой библиотеке вот так:
if (cardsForPrint.Rows[k][20].ToString() == "L")
   {
       Hashtable ht = (Hashtable)serializer.Deserialize(LParams);
   }

Этот кусок кода в событии на нажатие кнопки. Дальше мне надо взять результат и работать с ним, за пределами условий, т.е. после if else пишу:
newPrintTemplate = newPrintTemplate.Replace("$v67", krest(Convert.ToInt32((string)ht[1])));

И вот здесь он не видит переменную ht, если поставить этот код внутрь if то видит. За его пределами нет.
Выручайте ребят, несколько дней уже бьюсь :)
P.S. Когда выношу объявление переменной за пределы if то они перестают работать. Т.е. пишу Hashtable ht = new Hashtable(); над условиями, то после условий видится пустая хэш таблица.
P.P.S. Комментарии подсказали и заработало в итоге вот так:
Hashtable ht = new Hashtable();
if (cardsForPrint.Rows[k][20].ToString() == "L")
{
ht = (Hashtable)serializer.Deserialize(LParams);
}
  • Вопрос задан
  • 1629 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Странно, что несколько дней. Учите, что такое область видимости переменной professorweb.ru/my/csharp/charp_theory/level3/3_5.php.
Для устранения проблемы просто вынесите объявление переменной за пределы if
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sergey_kzn
Вам нужно почитать про область видимости переменной. Например тут:
metanit.com/sharp/tutorial/2.18.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы