静态初始化不适用于 c# 和 xaml
Posted
技术标签:
【中文标题】静态初始化不适用于 c# 和 xaml【英文标题】:Static Initialization is not working with c# and xaml 【发布时间】:2015-03-26 21:59:59 【问题描述】:这就是问题所在。我做了一类枚举来跟踪难度级别。当我通过我的主要关卡时,它不会传递到我的 OtherPage 中。这是我的代码公共密封类 GlobalVars 公共枚举难度 简单, 中间的, 难的 私有静态只读 GlobalVars 实例 = new GlobalVars(); 私有 GlobalVars()
public static GlobalVars Instance
get
return instance;
这是我在主页中所做的 私人无效Easy_Checked(对象发送者,RoutedEventArgs e) GlobalVars.Difficulty _difficulty = GlobalVars.Difficulty.Easy; //_difficulty = GlobalVars.Difficulty.Easy;
接下来我进入我的部门页面并执行以下操作
初始化一个类的实例
私有 GlobalVars.Difficulty _difficulty;
然后
如果(_difficulty == GlobalVars.Difficulty.Easy) 做一些简单的事
如果(_difficulty == GlobalVars.Difficulty.Hard) 努力地做某事
我的枚举值总是很容易无法将其他级别传递到此页面。
【问题讨论】:
@khlr 这是对我之前的问题进行了一些修改的问题。 【参考方案1】:首先,您没有错误地使用了 Enum。难度是枚举(类型)。 其次,您根本不使用 GlobalVars 实例,您总是在使用局部变量。实例属性必须用于使用实例,然后在实例级别设置值。
GlobalVars.Difficulty _difficulty = GlobalVars.Difficulty.Easy;
上面的语句只给变量_difficulty赋值,而不给静态实例赋值。如果您需要携带状态或设置难度值,请使用一些实例\成员级别的变量,例如,
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
【讨论】:
这非常有帮助,谢谢您的更正。我会听从你的提示,希望我能得到它。以上是关于静态初始化不适用于 c# 和 xaml的主要内容,如果未能解决你的问题,请参考以下文章