我正在使用VS 2017 v15.5.0。

我有一个名为Con_02的最小控制台项目。该项目中主类的 namespace 只是Con_02(该类如下所示)。

在这个项目中,我添加了一个名为Business的新文件夹。在Business文件夹中,创建一个名为Employee的类。 VS为Employee类生成的默认 namespace 是Con_02.Business。我将此 namespace 简化为Business

回到我的主类中,我实例化Employee。这是我完整的主要类(class):

namespace Con_02 {
    class Program {
        Business.Employee e1 = new Business.Employee();

        private static void Main() { }
    }
}

到现在为止还挺好。一切都会编译。

现在,我在Company文件夹中创建另一个类Business。 VS生成一个 namespace Con_02.Business

现在,主要Con_02.Program类不再编译。具体来说,以前已经编译好的Business.Employee对象的创建给了我一个编译器错误:



我并不是在问如何解决该问题,因为我试图理解为什么编译器似乎采用相对于Con_02的命名空间。

最佳答案

由于您正在创建一个名为Con_02.Business的新命名空间,其中包含Company类,因此Business.Employee被视为在Con_02.Business命名空间下,但是Con_02.Business除了Company类之外什么都不包含。

c# - C#命名空间,文件夹,编译器错误-LMLPHP

最好改变

namespace Con_02.Business
{
    class Company
    {
    }
}


namespace Business
{
    class Company
    {
    }
}

或只使用Employee e1 = new Employee();
请记住,命名空间仅是关于对类进行分组。

关于c# - C#命名空间,文件夹,编译器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47682865/

10-09 06:34