这是不是很清楚你为什么在这种情况下,即。你可以做什么,不可以做什么。
理想情况下,我只是创建一个类的实例,并避免整个问题,但我认为有一些原因,你不能或不想这样做?
否则,解决这个问题的最简单最简单的方法可能就是创建两个类的副本,并在每个名称空间中放置一个,每个都有自己的静态变量。 我强烈建议给这些类别提供不同的名称,只是为了清楚,并在以后避免混淆。
您的最终选择是寻找完全不同的解决方案。很难说,如果不知道更多关于你的情况,但如果你真的不能使用一个实例,那么看起来好像num
应该也许不是这个类的责任。
很明显,你想在某些逻辑上下文/作用域中存储和使用num
;你应该问自己,你有什么其他的选择(除了那个班级)在你的范围内做这件事(希望这不是太抽象^^)。
UPDATE:
我明白你的意思了。我认为你应该可以重写这个类。尝试是这样的:
using VariousTesting;
namespace VariousTesting
{
public class LibClass
{
public static int num;
public static void libMethod(int arg)
{
num = arg;
}
}
}
namespace VariousTesting2
{
public class SubLibClassA : LibClass
{
public static int num;
public static void libMethod(int arg)
{
num = arg;
}
public static int GetNum()
{
return num;
}
}
}
namespace VariousTesting2
{
public class SubLibClassB : LibClass
{
public static int num;
public static void libMethod(int arg)
{
num = arg;
}
public static int GetNum()
{
return num;
}
}
}
可以按如下测试:
SubLibClassA.libMethod(1);
Console.WriteLine(SubLibClassA.GetNum()); // 1
SubLibClassB.libMethod(2);
Console.WriteLine(SubLibClassB.GetNum()); // 2
Console.WriteLine(SubLibClassA.GetNum()); // still 1! Yay! :D
你的问题不明确。你的问题到底是什么? –
你想实现什么?你想从两个不同的命名空间调用'libClass.libMethod'? – Sander
我认为他担心如果他引用'libClass.num',它将在两个名称空间中保持相同的值。 @ Centuri0n:我在这个假设中正确吗? – Amicable