我在一个类中有一个枚举类型的静态变量。
public enum SomeEnum
{
UnwantedValue,
DesiredValue
}
public class SomeClass
{
public static SomeEnum Variable;
...
}
我想在其他地方重新分配变量,但无论出于何种原因,赋值对其值都没有影响。
public class OtherClass
{
public OtherClass()
{
// SomeClass.Variable defaults to SomeEnum.UnwantedValue
SomeClass.Variable = SomeEnum.DesiredValue;
// SomeClass.Variable still equals SomeEnum.UnwantedValue
}
public void Foo()
{
SomeClass.Variable = SomeEnum.DesiredValue;
// This does not work either
}
}
明确指定枚举值无效。
public enum SomeEnum
{
UnwantedValue = 0,
DesiredValue = 1
}
在初始化时为变量赋值是唯一的时间分配,但我仍然无法在其他地方更改该值。
public static SomeEnum Variable = SomeEnum.DesiredValue;
我不知道为什么我不能重新分配这个变量的值。
编辑:将变量更改为实例类型允许我像往常一样重新分配其值。
public SomeEnum Variable; // This fixes the problem
然而,这是不可行的,因为它在单例类中使用并且需要保持静态(如果有人想要打电话给我需要一个单例,该类是为了处理对系统的争用整个应用程序中的资源;枚举类型用作资源状态的标志。)
[注意:我提到了this question,但它没有解释为什么无法重新分配变量。]
答案 0 :(得分:0)
由于您显示的代码不是您遇到问题的确切代码,因此有点难以回答这个问题。我觉得这里缺少一些东西。不过,这可能有助于使事情变得更加清晰:
尝试在包含枚举的类中创建方法SetSomeEnum()
和GetSomeEnum()
,并将枚举本身设为私有。严格地说,这应该在逻辑上没有任何区别。但是,它应该使调试更容易,因为您可以单步执行并更清楚地查看正在进行的调用等。
private static SomeEnum _myEnum;
public static void SetSomeEnum(SomeEnum value){
_myEnum = value;
}
public static SomeEnum SetSomeEnum(SomeEnum value){
return _myEnum;
}
编辑:第二个想法,这里的房产可能更可取:
public SomeEnum MyEnum
{
get { return _myEnum }
set { _myEnum = value; }
}