繁体   English   中英

C#获取一个枚举,但在switch语句中无法正常工作

[英]C# gets an enum, but doesn't work correctly with switch statement

我在枚举方面遇到麻烦,然后使用switch语句对其进行了检查。 我不确定我是否做错了什么,但是我没有收到任何错误,所以嘿。

# Level.cs

enum LevelID
{
    Level_One = 0,
    Level_Two = 1,
}

private LevelID lvlID;
private string xml;

StreamReader xmlStream;

public Level()
{
    switch (lvlID)
    {
        case LevelID.Level_One:
            xmlStream = new StreamReader("../../assets/xml/test1.tmx");
            break;
        case LevelID.Level_Two:
            xmlStream = new StreamReader("../../assets/xml/test2.tmx");
            break;
      }

      xml = xmlStream.ReadToEnd();
      xmlStream.Close();
}

public LevelID LvlID
{
    get { return this.lvlID; }
    set { this.lvlID = value; }
}

public string Xml
{
    get { return this.xml; }
}


## The xml gives me lots of numbers from the different files

# game.cs

Level lvl = new Level();
lvl.LvlID = LevelID.Level_Two;

## When I then get the lvlID from Level.cs again its says it holds Level_Two,
## but the switch still gives me the numbers from test1.xml

问题是,我正在switch语句中检查枚举,以确定应该在解析为XElement的String中存储哪些xml文件。

当我尝试执行此操作时,即使在检查时,我的enum变量始终为第二种情况提供正确的枚举,但它始终为我提供第一种情况下的xml。 即使我的开关中没有默认值,它仍然会加载第一种情况的xml文件。 这是怎么回事,我在做什么错?

因此,您的开关位于构造函数中。 仅在实例化类时才进行评估。 由于发生这种情况您要设置属性,因此开关将永远不会看到它。

就是说,如果您使用调试器,这是很容易看到的。 您可以在switch语句处停止代码,然后查看该值是什么。 然后,您可以单步执行代码以查看为什么该值不符合您的期望。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM