命名空间和类具有相同的名称

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 的一个已知限制吗?

Pat*_*man 5

没有必要有单独的类和命名空间名称,但事实上,编译器有时会感到困惑。对于各方来说,最好将命名空间名称和类名称分开。

如果您确实想使用相同的名称,可以帮助编译器不会混淆。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)