C# 日期时间计算的奇怪问题

C# 日期时间计算的奇怪问题,c#,.net,visual-studio-2010,enums,immediate-window,C#,.net,Visual Studio 2010,Enums,Immediate Window,我可能工作太辛苦了,但是有人能解释一下从立即窗口中取的以下内容吗 (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=无法计算表达式` 谢谢你的阅读 编辑: 是即时窗口给了我这个奇怪的结果,而不是

我可能工作太辛苦了,但是有人能解释一下从
立即
窗口中取的以下内容吗

(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
=无法计算表达式`

谢谢你的阅读

编辑:

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

截图:

编辑2:


社区似乎认为这是VS2010中的一个bug。我想知道@EricLippert或@JonSkeet是否可以抽出一分钟来确认这一点,或者,如果不是,请提供有关此行为的解释?

我不知道,我觉得它像一个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

在任何情况下,编译代码中的所有行为都与预期一致。

它看起来特定于常量0和非文字值。以下几点效果不错:

int zero = 0;
zero - (int)DateTime.Now.Date.DayOfWeek
-4
当以下操作失败时:

int four = 4;
0 - four
Could not evaluate expression
更新:我找不到类似的错误报告,所以我创建了一个:


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

这对我来说很好。你能发布你所有的代码吗?也许这里还发生了其他事情?不是代码,只是即时窗口中特殊表达式的输出。@Jay我猜他在调试时谈论的是即时窗口-我试过了,但它不起作用,但我不知道为什么。哦,你的权利,我错过了。看起来很奇怪。@Raymond,他正在将int转换成int来表示为int…所有其他的变体都能工作。我同意这一点。肯定是虫子?让VisualStudio项目团队的书呆子们注意到这一点,我会获得某种奖励吗?;-)可能不会,但如果Eric Lippert读到这篇文章,你可能会在下一个版本中修复它。感谢上帝。我以为我开始发疯了。