1 つのクラス内に列挙型の静的変数があります。
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
ただし、シングルトン クラスで使用されており、静的に保つ必要があるため、これは実行不可能です (誰かがシングルトンの必要性について私に電話をかけたい場合に備えて、クラスはシステム リソースの競合を処理することを意図していますアプリケーション全体; 列挙型は、リソースのステータスのフラグとして使用されます)。
[注:この質問を参照しましたが、変数を再割り当てできない理由が説明されていませんでした。]