C#命名空间、文件夹、编译器错误

C#命名空间、文件夹、编译器错误,c#,compiler-errors,namespaces,C#,Compiler Errors,Namespaces,我使用的是VS2017 v15.5.0 我有一个最小的控制台项目,名为,Con_02。该项目中主类的名称空间仅为Con_02(该类如下所示) 在这个项目中,我添加了一个名为Business的新文件夹。在Business文件夹中,我创建了一个名为Employee的类。VS为Employee类生成的默认命名空间是Con_02.Business。我将此名称空间简化为业务 回到我的主类中,我实例化了Employee。这是我的全部主要课程: namespace Con_02 { class Pro

我使用的是VS2017 v15.5.0

我有一个最小的控制台项目,名为,
Con_02
。该项目中主类的名称空间仅为
Con_02
(该类如下所示)

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

回到我的主类中,我实例化了
Employee
。这是我的全部主要课程:

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

        private static void Main() { }
    }
}
到目前为止,一切顺利。万事俱备

现在,我在
Business
文件夹中创建了另一个类
Company
。VS生成一个名称空间,
Con_02.Business

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

命名空间“Con_02.Business”中不存在类型或命名空间名称“Employee”(是否缺少程序集引用?)

我不是在问如何解决这个问题,而是在试图理解为什么编译器似乎假设了一个相对于
Con_02
的名称空间

<代码>使用业务

在你
程序的顶部

并从员工实例化中删除业务部分


或者。为所有类使用相同的名称空间。

因为您正在创建一个名为Con_02.Business的新名称空间,其中包含公司类。员工被视为处于Con_02.Business名称空间下,但Con_02.Business只包含公司类

最好改变一下

namespace Con_02.Business
{
    class Company
    {
    }
}

或者只需使用
Employee e1=new Employee()


请记住,名称空间只是关于对类进行分组。

这就是为什么您不需要重复的名称空间名称。尝试
global::Business.Employee
使用Business
global::
添加
,如上所述。但最好不要使用这样的名称空间。是的,我知道发生了什么以及如何“修复”它,但编译器假设员工必须和公司位于同一名称空间,这似乎有些奇怪。我不喜欢,所以只需使用Employee e1=new Employee();然后
namespace Business
{
    class Company
    {
    }
}