我在一个类中有一个枚举类型的静态变量。
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
但是,这是不可行的,因为它在单例类中使用并且需要保持静态(如果有人想告诉我我需要单例,该类旨在处理跨系统资源的争用)整个应用程序;枚举类型用作资源状态的标志)。
[注意:我提到了这个问题,但它没有解释为什么不能重新分配变量。]