由于某种原因,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只是向我展示了伪造的值。