错误::当前上下文中不存在

时间:2013-04-03 15:08:25

标签: c# asp.net try-catch

好的,这是我的代码

        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();
        }

为什么会这样?

4 个答案:

答案 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)

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

答案 3 :(得分:0)

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

你可以这样解决:

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