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

时间:2015-10-07 08:34:39

标签: c# visual-studio class namespaces

我有以下课程

namespace COM.XX.ZZ{
 class XX{
 }
}

当我尝试在不同的类中使用它时

using COM.XX.ZZ;
class someClass{
 static void main(String args[]){
       XX.someMethod();
 }
}

Visual Studio在类和包之间混淆,因为两者具有相同的名称。 视觉工作室的一个已知限制是命名空间和类应该总是不同吗?

2 个答案:

答案 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();
    }
}

请注意,我在调用静态方法之前添加了完整的命名空间前缀。

编辑:对名称空间和类使用相同的名称确实不是一个好主意。

相关问题