ome*_*727 -1 c# namespaces class visual-studio
我有以下课程
namespace COM.XX.ZZ{
class XX{
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在不同的班级中使用它时
using COM.XX.ZZ;
class someClass{
static void main(String args[]){
XX.someMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio 会混淆类和包,因为两者具有相同的名称。命名空间和类应该始终不同,这是 Visual Studio 的一个已知限制吗?
没有必要有单独的类和命名空间名称,但事实上,编译器有时会感到困惑。对于各方来说,最好将命名空间名称和类名称分开。
如果您确实想使用相同的名称,可以帮助编译器不会混淆。using在您的班级中使用 a :
using XXClass = COM.XX.ZZ.XX;
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
XXClass.someMethod();
Run Code Online (Sandbox Code Playgroud)
这远不是推荐的,所以我建议重命名它们中的任何一个。
这可能失败的另一个原因是它someMethod不是静态的。在这种情况下,编译器认为您引用的是XX-the-namespace。XX首先尝试实例化:
XX xx = new XX();
xx.someMethod();
Run Code Online (Sandbox Code Playgroud)