好的,这是我的代码
DataTable myDataTable = new DataTable();
try
{
// Code Logic
}
catch (Exception exp)
{
//Handle Exception
}
finally
{
myDataTable.Dispose();
}
它看起来很好并且没有显示编译错误
但是当我在try potion中声明数据表时,它显示错误
The name 'myDataTable' does not exist in the current context
这是代码
try
{
DataTable myDataTable = new DataTable();
}
catch (Exception exp)
{
//Handle Exception
}
finally
{
myDataTable.Dispose();
}
为什么会这样?
答案 0 :(得分:2)
在块中声明DataTable时,它是该块的本地。你需要在块外声明它以便在块外访问它。
或者,您可以使用using
在执行该块后将处置DataTable
using(DataTable myDataTable = new DataTable())
{
try
{ ... }
catch (Exception exp)
{
//Handle Exception
}
}
-- data table is disposed after this
答案 1 :(得分:0)
当在try
块内时,它将在该'内部'范围内声明。如果您想操纵它或对它做任何事情,它必须在try
之外。
如果在if
子句中声明变量,则以类似的方式。它属于该块的范围。
答案 2 :(得分:0)
这是因为你在不同的范围内使用它。您的DataTable
在 try
块内,因此 finally
块内无法访问。
答案 3 :(得分:0)
在第二种情况下,您使用刚刚myDataTable
块部分限制try
变量的范围。
你可以这样解决:
DataTable myDataTable;
try
{
myDataTable = new DataTable();
}
catch (Exception exp)
{
//Handle Exception
}
finally
{
myDataTable.Dispose();
}