7

我可能工作太努力了,但是有人可以向我解释以下内容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

编辑2:

社区似乎认为它是 VS2010 中的一个错误。我想知道@EricLippert 或@JonSkeet 是否可以花一点时间来确认这一点,或者如果不是,请提供有关此行为的解释?

4

2 回答 2

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 -表达式立即窗口

更新 #2:Microsoft 能够重现该问题并将其解决为“无法修复”,这意味着 Visual Studio 的下一个版本有希望,但 VS2010 没有。

于 2011-07-14T17:14:51.093 回答
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

在任何情况下,编译代码中的一切都按预期运行。

于 2011-07-14T16:16:46.403 回答