2014-11-20 115 views
0

我正在帮助将VB代码转换为C#。在C#代码中,我有一个错误,说我的一个变量是未分配的。当我右键单击(在Visual Studios 2013中)并单击转到定义时,它将我带到它的声明中,它明确指定为null。我甚至试图将它分配给除了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变量为空,因此它不包含Tables [0]。 – 2014-11-20 18:55:04

+0

@PhillipXT但我已经尝试将其设置为代码中其他DataSet变量已设置为的东西,但仍然收到相同的错误。 – 2014-11-20 19:02:39

回答

1

试试这个,只是为了摆脱错误的,那么你可以计算出你需要从那里做什么:

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

摆脱set5 = null声明。

现在你的其他功能应该能够看到Tables[0]

+0

同样的错误仍然弹出。当我把这行:'wires.grdInser.DataSource = set5.Tables [0];'根据你的建议,它不会给出错误。 – 2014-11-20 19:12:01

+1

在线'wires.grdInser.DataSource = set5.Tables [0];'上放置一个断点,检查该行的哪一部分有错误,并确保每个变量的值都是您期望它们的值。你的代码中可能有另一部分正在改变某些东西 - 很难知道没有看到整个事情。 – 2014-11-20 19:15:21

+0

这些碎片之间的代码段超过4,000行,所以它绝对有可能是这种情况。我从来没有被教过如何调试,我仍然对编程很陌生,但是当程序由于编译错误而不能执行时可以调试吗?当我在运行编译的程序时到达那部分代码时,我的印象是断点只会停止程序。 – 2014-11-20 19:26:57

相关问题