[英]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.