静态初始化不适用于 c# 和 xaml

Static Initialization is not working with c# and xaml

问题来了。我做了一个 class 的枚举来跟踪难度级别。当我通过我的主要关卡时,它不会传递到我的 OtherPage 中。这是我的代码 public sealed class GlobalVars { public 枚举难度 { 简单的, 中间的, 难的 } private static readonly GlobalVars instance = new GlobalVars(); 私有 GlobalVars() { }

    public static GlobalVars Instance
    {
        get
        {
            return instance;
        }
    }
}

这是我在主页上所做的 private void Easy_Checked(object sender, RoutedEventArgs e) { GlobalVars.Difficulty_难度=GlobalVars.Difficulty.简单; //_difficulty = GlobalVars.Difficulty.Easy; }

接下来我转到我的部门页面并执行以下操作

初始化 class

的实例

私人 GlobalVars.Difficulty _难度;

然后

if (_难度 == GlobalVars.Difficulty.简单) { 做一些简单的事 }

if (_难度== GlobalVars.Difficulty.困难) { 做一些困难的事情 }

我的枚举值总是很容易无法通过其他级别到此页面。

首先,您不是不正确地使用 Enum。难度是一个枚举(类型)。 其次,您根本 没有 使用 GlobalVars 实例,您始终使用局部变量。必须使用实例 属性 才能使用实例,然后在实例级别设置值。

GlobalVars.Difficulty _difficulty = GlobalVars.Difficulty.Easy;    

上面的语句只给变量_difficulty赋值,没有给静态实例赋值。如果你需要携带状态或设置难度值,使用一些instance\member级别变量,如

public Difficulty DifficultySet { get; set; }    

从 MainPage 设置实例的 DifficultySet,从任何其他页面访问该值。由于您有单例(只有一个实例),从主页设置的值将可用于该实例。

完整代码如下所示。 [请编写您自己的代码以了解静态、枚举和实例化​​的工作原理。]

public sealed class GlobalVars
{
    static readonly GlobalVars instance = new GlobalVars();

    public Difficulty DifficultySet { get; set; }

    private GlobalVars()
    {

    }

    public static GlobalVars Instance
    {
        get
        {
            return instance;
        }
    }

    public enum Difficulty { Easy, Intermediate, Hard };
}

//main page
GlobalVars pageInstance = GlobalVars.Instance;
pageInstance.DifficultySet = GlobalVars.Difficulty.Easy;

//other page
if(GlobalVars.Instance.DifficultySet == GlobalVars.Difficulty.Easy)
{
    //write your logic
}