2014-11-20 2 views
0

Я помогаю преобразовать код VB в C#. В коде C# у меня есть ошибка, говорящая о том, что одна из моих переменных не назначена. Когда я нажимаю правой кнопкой мыши (в Visual Studios 2013) и нажимаю «Перейти к определению», он приводит меня к его объявлению, где явно присваивается значение null. Я даже попытался присвоить его чему-то еще, кроме нулевого.Почему моя переменная говорит, что она не назначена, когда она назначена?

Вот декларация и быть установлен в нуль:

DataSet set5 = new DataSet(); 
set5 = null; 

Вот где она вызывается, и где я получаю ошибку:

try 
{ 
    wires.grdInser.DataSource = set5.Tables[0];//Being called here 
} catch (Exception exception92) 
{ 
    ProjectData.SetProjectError(exception92); 
    Exception exception46 = exception92; 
    ProjectData.ClearProjectError(); 
} 

Существует куча кода - между этими двумя частями кода, но я не думаю, что область, в которую вызывается переменная, является проблемой, так как «Перейти к определению» приводит меня непосредственно к определению. Может ли проблема возникнуть из-за того, что она находится внутри оператора try/catch? Любая помощь будет принята с благодарностью.

+0

Переменная set5 имеет значение null, поэтому она не содержит таблиц [0]. –

+0

@PhillipXT, но я попытался установить его для вещей, которые были установлены другими переменными DataSet в коде, и я все равно получаю ту же ошибку. –

ответ

1

Попробуйте вместо этого, просто чтобы избавиться от ошибки, то вы можете выяснить, что вам нужно сделать, оттуда:

DataSet set5 = new DataSet(); 
DataTable x = new DataTable(); 
set5.Tables.Add(x); 

Избавиться от set5 = null заявления.

Теперь ваша другая функция должна быть в состоянии видеть Tables[0].

+0

Такая же ошибка все еще появляется. Когда я помещаю строку: 'wires.grdInser.DataSource = set5.Tables [0];' прямо под то, что вы предложили, это не дает ошибки. –

+1

Поместите точку останова на строку 'wires.grdInser.DataSource = set5.Tables [0];', проверьте, какая часть этой строки имеет ошибку, и убедитесь, что значения каждой переменной являются тем, что вы ожидаете от них. Может быть другой раздел вашего кода, который меняет что-то - трудно понять, не видя всего этого. –

+0

Кусок кода между этими кусками расширяет более 4000 строк, поэтому, безусловно, это возможно. Мне никогда не учили, как отлаживать, я все еще новичок в программировании, но можно ли отлаживать, когда программа не будет выполняться из-за компиляции ошибок? У меня создалось впечатление, что контрольные точки только останавливают программу, когда вы достигаете этой части кода при запуске скомпилированной программы. –