C#命名空间、文件夹、编译器错误
我使用的是VS2017 v15.5.0 我有一个最小的控制台项目,名为,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
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
{
}
}