DateTime计算的奇怪问题

本文关键字:问题 计算 DateTime | 更新日期: 2023-09-27 18:02:11

我可能工作太努力了,但是有人能向我解释一下以下内容吗,取自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 =无法求值表达式

感谢您的阅读。

编辑:

是Immediate窗口给了我这个奇怪的结果,而不是常规的代码。

截图:http://ploader.net/files/0c2556df475b3075634d7fd2b0575794.PNG

EDIT2:

社区似乎认为这是VS2010中的一个bug。我想知道@EricLippert或@JonSkeet是否能抽出一分钟来证实这一点,或者,如果不能,就这种行为提供一个解释?

DateTime计算的奇怪问题

它看起来特定于常量0和非文字值。下面的代码可以正常工作:

int zero = 0;
zero - (int)DateTime.Now.Date.DayOfWeek
-4

而以下失败:

int four = 4;
0 - four
Could not evaluate expression

更新:我找不到类似的bug报告,所以我创建了一个:https://connect.microsoft.com/VisualStudio/feedback/details/679501/integer-literal-0-integer-variable-could-not-evaluate-expression-immediate-window

更新#2:微软能够重现这个问题,并将其解决为"不会修复",这意味着下一个版本的Visual Studio有希望,但VS2010没有。

我不知道,我觉得这像是一个bug。

// 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

在任何情况下,编译后的代码都按照预期运行。