我一直在处理一个应用程序,我遇到了一个我以前从未见过的异常错误。我有两个类,一个是UserControl,另一个是Form,设置如下:
namespace NC
{
public partial class Board : UserControl
{
// stuff
}
}
namespace NC
{
partial class Board
{
// this is the *.designer.cs file
}
}
namespace NC
{
public partial class MainForm : Form
{
// normal form stuff
}
}
namespace NC
{
partial class MainForm
{
// this is the *.designer.cs file. it has a Board added to it.
}
}
它们都包含在同一个项目中,因此它不应成为问题。但是,我在编译时得到了这个:
The type name 'Board' does not exist in the type 'NC.NC'
我查看了Form的设计器文件,发现了这个:
this.Board1 = new NC.Board();
我删除了命名空间,它工作正常。每次我访问表单编辑器时,它都会再次添加它。我之前从未遇到任何问题。是否有某种设置或我可以改变的东西?
答案 0 :(得分:3)
你有一个名为NC
的班级吗?如果你这样做,你应该把它重命名为其他东西。听起来好像编译器在名为NC
的类中寻找Board,而不是命名空间NC
......
答案 1 :(得分:0)
您的项目设置页面有一个默认命名空间。看看那里。
实际上,默认的命名空间名称不应该导致此行为。例如,我刚刚创建了一个空的Windows窗体应用程序,其默认命名空间是使用WindowsFormsApplication1设置的,这是VS内部解决方案的名称。
答案 2 :(得分:0)
如果您使用命名空间来访问某个类,则需要使用完整命名空间(可能是ProjectName.NC.Board),或者它必须比您可以访问的任何命名空间更深。
Board与您已经存在的名称空间相同,因此您无需使用命名空间限定它。
答案 3 :(得分:0)
如果你从它自己的命名空间中调用[namespace]。[class],那么C#假设你正在寻找一个名为NC
的类,即使你没有。{也就是说,它会自动将NC.
附加到您正在调用的任何未引用外部命名空间(System.[whatever]
)的任何内容。因此,您对NC.Board
的电话会被转换为NC.NC.Board