try catch语句中的变量范围问题c#

时间:2017-12-01 16:36:29

标签: c# try-catch excel-interop

我不想在这里问一个简单的问题,但我已经研究了一段时间但无济于事。它严重限制了我的申请。

为什么我在try块内的excelWorksheet变量上出现红色波浪形(一个名为' excelWorksheet'的本地或参数不能在此范围内声明,因为该名称用于封闭的本地范围)。如果我删除了null声明,那么' excelWorksheet' try catch语句变为红色后。非常感谢任何帮助。以下是代码:

 Excel.Worksheet excelWorksheet = null;          
        try
        {
            //declare the worksheet variable raw data
            string currentSheet = "Raw Data";
            Excel.Worksheet excelWorksheet = (Excel.Worksheet)ExcelSheets.get_Item(currentSheet);
        }
        catch(Exception r)
        {
            MessageBox.Show("The Raw Data sheet in the report does not exist. " + r);
            return;
        }

3 个答案:

答案 0 :(得分:8)

  

无法在此范围内声明名为“excelWorksheet”的本地或参数,因为该名称用于封闭的本地范围

您正在尝试重新声明变量。删除声明并简单地使用在封闭范围中声明的变量:

string currentSheet = "Raw Data";
excelWorksheet = (Excel.Worksheet)ExcelSheets.get_Item(currentSheet);

答案 1 :(得分:1)

你能尝试以下吗?。

Excel.Worksheet excelWorksheet = null;          
            try
            {
                //declare the worksheet variable raw data
                string currentSheet = "Raw Data";
  

// excelWorksheet变量已经存在于范围内,因此不需要   再次宣布

                excelWorksheet = (Excel.Worksheet)ExcelSheets.get_Item(currentSheet);
            }
            catch(Exception r)
            {
                MessageBox.Show("The Raw Data sheet in the report does not exist. " + r);
                return;
            }

答案 2 :(得分:1)

Excel.Worksheet excelWorksheet = null;          

使用上面的语句,您已经声明了excelWorksheet变量。您无需再次声明。以下代码:

Excel.Worksheet excelWorksheet = null;          
            try
            {
                //declare the worksheet variable raw data
                excelWorksheet = ExcelSheets.get_Item("Raw Data") as Excel.Worksheet;
            }
            catch(Exception r)
            {
                MessageBox.Show("The Raw Data sheet in the report does not exist. " + r);
                return;
            }

用于铸造。这是一个很好的做法。