【问题标题】:Static Initialization is not working with c# and xaml静态初始化不适用于 c# 和 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 这是对我之前的问题进行了一些修改的问题。

标签: c# windows xaml windows-phone-8


【解决方案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
}

【讨论】:

  • 这非常有帮助,谢谢您的更正。我会听从你的提示,希望我能得到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2021-07-12
相关资源
最近更新 更多