我正在使用VS 2017 v15.5.0。
我有一个名为Con_02
的最小控制台项目。此项目中主类的名称空间只是Con_02
(类如下所示)。
在这个项目中,我添加了一个名为Business
的新文件夹。在Business
文件夹中,我创建了一个名为Employee
的类。 VS为Employee
类生成的默认命名空间为Con_02.Business
。我将此命名空间简化为Business
。
回到我的主课程中,我实例化了Employee
。这是我的完整主要课程:
namespace Con_02 {
class Program {
Business.Employee e1 = new Business.Employee();
private static void Main() { }
}
}
到目前为止,这么好。一切都在汇编。
现在,我在Company
文件夹中创建了另一个类Business
。 VS生成名称空间Con_02.Business
。
现在,主Con_02.Program
类不再编译。具体来说,创建之前编译得很好的Business.Employee
对象会给我一个编译器错误:
类型或命名空间名称'员工'名称空间中不存在' Con_02.Business' (你错过了一个程序集引用吗?)
我没有问过如何解决这个问题,因为我试图理解为什么编译器似乎假定相对于Con_02
的命名空间。
答案 0 :(得分:1)
由于您正在创建一个名为Con_02.Business的新命名空间,其中包含Company类,因此Business.Employee被视为在Con_02.Business命名空间下,但Con_02.Business只包含Company类。
最好改变
namespace Con_02.Business
{
class Company
{
}
}
到
namespace Business
{
class Company
{
}
}
或只使用Employee e1 = new Employee();
记住命名空间只是关于对类进行分组。
答案 1 :(得分:0)
添加
using Business;
位于Program
课程的顶部。
并从您的Employee实例中删除Business-part。
OR。为所有类使用相同的命名空间。