我可能一直在努力工作,但有人可以从Immediate
窗口向我解释以下内容吗?
(int)DateTime.Now.Date.DayOfWeek
= 4
和
(int)DayOfWeek.Sunday
= 0
和
(int)DateTime.Now.Date.DayOfWeek - (int)DayOfWeek.Sunday
= 4
但
(int)DayOfWeek.Sunday - (int)DateTime.Now.Date.DayOfWeek
=无法评估表达式
感谢阅读。
编辑:
它的立即窗口给了我这个奇怪的结果,而不是常规代码。
屏幕截图:http://ploader.net/files/0c2556df475b3075634d7fd2b0575794.PNG
EDIT2:
社区似乎认为它是VS2010中的一个错误。我想知道@EricLippert或@JonSkeet是否可以花一分钟来确认这一点,或者,如果不是,请提供有关此行为的解释?
答案 0 :(得分:5)
它看起来特定于常量0和非文字值。以下工作正常:
int zero = 0;
zero - (int)DateTime.Now.Date.DayOfWeek
-4
以下操作失败:
int four = 4;
0 - four
Could not evaluate expression
更新:我找不到类似的错误报告,所以我创建了一个: https://connect.microsoft.com/VisualStudio/feedback/details/679501/integer-literal-0-integer-variable-could-not-evaluate-expression-immediate-window
更新#2:Microsoft能够重现该问题,并将其解析为“无法修复”,这意味着对Visual Studio的下一版本有希望,但对VS2010则没有。
答案 1 :(得分:3)
我不知道,这对我来说似乎是一个错误。
// This doesn't work
0 - (int)DateTime.Now.Date.DayOfWeek
// But loads of similar variations do:
1 - (int)DateTime.Now.Date.DayOfWeek
-1 - (int)DateTime.Now.Date.DayOfWeek
a - (int)DateTime.Now.Date.DayOfWeek
0 - (int)DayOfWeek.Thursday
在任何情况下,一切都在编译代码中按预期运行。