为什么Enum.Parse总是解析为默认值



由于某种原因,Enum.Parse每次都会解析为默认值。以下解析为Unknown。每一次。我在调试器的"监视"窗口中执行此操作,这就是我得到的结果。

枚举定义,供参考:

[Flags]
public enum BugType
{
Unknown = 0,
Beetle = 1 << 0,
Spider = 1 << 1,
Mosquito = 1 << 2,
Any = Beetle | Spider
}

在观察窗口和即时窗口中:

(BugType)Enum.Parse(typeof(BugType), BugType.Beetle.ToString(), true)

我甚至不明白为什么会在"监视"窗口、即时窗口以及正在运行的调试代码中发生这种情况。我无法获取Enum。解析工作。

作为一个小背景,我注意到了这种情况,并开始测试,因为我发现JSON.NET未能正确地反序列化这些枚举。他们总是带着默认值回来。所以我开始调试,但我甚至无法获得最基本、简单、无需思考的示例。我真的试图解析我从ToString'中获得的字符串值,枚举本身!

事实证明,只是调试窗口显示了错误的值,尽管变量中的值是正确的。调试器可能阻止显示实际值以防止副作用?

我知道它只是显示错误的值的原因是,当我遍历代码时,if语句测试该值,它是正确的,并转到了Beetle而不是Unknown的if语句块。尽管我确实在观察窗口中的变量,但它显示Unknown

浪费时间。VS只是向我展示了伪造的值。

最新更新