我有一个像这样的静态类:
namespace Engine.Configuration
{
public static class Configuration
{
public static int i;
}
}
在同一个项目中,但是我有一个类试图访问静态类变量:
namespace Engine.MainProgram
{
public class MainProgram
{
int x;
int y;
public void LoadConfiguration()
{
x = Configuration.Configuration.i;
}
}
}
我想要做的就是在MainProgram中放置一个using语句,如下所示:
using Engine.Configuration;
...
x = Configuration.i;
但是当我尝试使用visual studio时,总是将Configuration视为命名空间而不是静态类。我的问题是为什么会发生这种情况,我该如何纠正?
答案 0 :(得分:2)
尝试:
using A = Engine.Configuration;
然后
x = A.Configuration.i;
或只是使用
x = global::Engine.Configuration.Configuration.i
答案 1 :(得分:1)
编译器并不总是知道如何区分命名空间和具有相同名称的类名。
改变这个:
using Engine.Configuration;
using Configuration = Engine.Configuration.Configuration;
<强> Explenation:强>
假设您直接在根命名空间Engine下工作,如下所示:
namespace Engine
{
}
然后你就可以在其他命名空间中得到这样的东西:
namespace Engine
{
Engine.Configuration.Configuration;
// Or since you are in the root (Engine) you don't need to specify Engine:
// You can always omit the root namespace if the namespace you're in has the same root.
Configuration.Configuration;
}
或者通过声明使用命名空间,但编译器不会知道命名空间或命名空间中的类:
using Engine.Configuration;
namespace Engine
{
// This will still work.
Engine.Configuration.Configuration;
// This will break, do we mean "Engine.Configuration.Configuration" or "Engine.Configuration"?
Configuration;
}
所以最好永远不要让类与它所在的命名空间具有相同的名称。也许将命名空间更改为Engine.Configuration s 。