2

这是我的有效代码:

DataTable myDataTable = new DataTable();
try
{
    // Code Logic
}
catch (Exception exp)
{
    //Handle Exception
}
finally
{
    myDataTable.Dispose();
}

它看起来很好并且没有显示编译错误

但是当我在 try 药水中声明数据表时,它会显示一个错误:

当前上下文中不存在名称“myDataTable”

这是尝试这样做的代码:

try
{
    DataTable myDataTable = new DataTable();
}
catch (Exception exp)
{
    //Handle Exception
}
finally
{
    myDataTable.Dispose();
}

为什么会这样?

4

4 回答 4

4

在块中声明 DataTable 时,它​​是该块的本地对象。您需要在块外声明它才能在块外访问它。

或者,您可以使用usingwhich 将在该块执行后处理 DataTable:

using(DataTable myDataTable = new DataTable())
{
   try
   { ... }
   catch (Exception exp)
   {
       //Handle Exception
   } 
} 
//data table is disposed after this
于 2013-04-03T15:14:30.573 回答
0

try块内时,它将在“内部”范围内声明。如果你想操纵它,或者用它做任何事情,它必须在try.

如果您在if子句中声明变量,则以类似的方式。它在该块的范围内。

于 2013-04-03T15:10:09.853 回答
0

这是因为您在不同的范围内使用它。您DataTable块内,因此在块内无法访问。 try finally

于 2013-04-03T15:10:23.930 回答
0

在第二种情况下,您使用 just块部分限制myDataTable变量的范围。try

你可以像这样修复它:

    DataTable myDataTable;
    try
    {
        myDataTable = new DataTable();
    }
    catch (Exception exp)
    {
        //Handle Exception
    }
    finally
    {
        myDataTable.Dispose();
    }
于 2013-04-03T15:10:24.517 回答