使用VS13在C#中声明变量时出现奇怪错误

Adj*_*jit 1 c# excel visual-studio-2010 visual-studio visual-studio-2013

我说,我已经导入了办公室库 using Microsoft.Office.Interop;

我正在尝试创建一个方法来检查Excel工作簿是否打开.由于这个错误,还没有取得任何进展.

当我声明Excel.Application exApp;它时,无法找到Type或Namespace名称'excel'.

它说我需要声明它说 Microsoft.Office.Interop.Excel.Application exApp;

我真的不认为我在这里做错了什么......我的导入没有错误..

using Microsoft.Office.Interop;

namespace Month_End_Closing
{
    public partial class Step1Form : Form
    {
        public Step1Form()
        {
            InitializeComponent();
        }

        static bool IsOpened(string wbook)
        {
            bool isOpened = true;
            Excel.Application exApp;

            return isOpened;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

using指令不像那样工作.您不能在指令中提供命名空间名称的一部分using,然后在其他地方提供其余部分.

从C#5规范的9.4.2节:

使用名称空间指令不加限定要使用的导入包含在一个命名空间中的类型分为直接封闭的编译单元或命名空间体,从而使每种类型的标识符.

...

一个using命名空间指令导入包含在给定命名空间,但具体的类型不导入嵌套的命名空间.

例如,这是无效的:

using System;
...

Console.WriteLine(IO.File.Exists("foo"));
Run Code Online (Sandbox Code Playgroud)

所以你可以写:

using Microsoft.Office.Interop.Excel;
Run Code Online (Sandbox Code Playgroud)

然后:

Application exApp;
Run Code Online (Sandbox Code Playgroud)

假设这Application是明确无误的.(听起来好像不是你的情况.)或者你可以使用别名:

using Excel = Microsoft.Office.Interop.Excel;
Run Code Online (Sandbox Code Playgroud)

然后:

Excel.Application exApp;
Run Code Online (Sandbox Code Playgroud)