静态初始化不适用于 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
}
问题来了。我做了一个 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
}