我有以下课程
namespace COM.XX.ZZ{
class XX{
}
}
当我尝试在不同的类中使用它时
using COM.XX.ZZ;
class someClass{
static void main(String args[]){
XX.someMethod();
}
}
Visual Studio在类和包之间混淆,因为两者具有相同的名称。 视觉工作室的一个已知限制是命名空间和类应该总是不同吗?
答案 0 :(得分:4)
没有必要具有单独的类和命名空间名称,但实际上,编译器有时会感到困惑。对于所有各方,最好将命名空间名称和类名分开。
如果您确实想使用相同的名称,可以帮助编译器避免混淆。为您的班级使用using
:
using XXClass = COM.XX.ZZ.XX;
然后你可以像这样使用它:
XXClass.someMethod();
这是far from recommended,所以我建议重命名其中任何一个。
这可能失败的另一个原因是someMethod
不是静态的。在这种情况下,编译器认为您指的是XX
- 命名空间。首先尝试实例化XX
:
XX xx = new XX();
xx.someMethod();
答案 1 :(得分:1)
如果你的类有静态方法,称为SomeMethod(),它是可访问的,例如:
namespace COM.XX.ZZ
{
class XX
{
public static void SomeMethod()
{
}
}
}
比你可以使用它:
using COM.XX.ZZ;
class someClass
{
static void main(String args[])
{
COM.XX.ZZ.XX.SomeMethod();
}
}
请注意,我在调用静态方法之前添加了完整的命名空间前缀。
编辑:对名称空间和类使用相同的名称确实不是一个好主意。