开发者

Weird Issue with DateTime calculation

I've probably been working too hard, but can someone explain to me the following, taken from the Immediate window?

(int)DateTime.Now.Date.DayOfWeek = 4

and

(int)DayOfWeek.Sunday = 0

and

(int)DateTime.Now.Date.DayOfWeek - (int)DayOfWeek.Sunday = 4

but

(int)DayOfWeek.Sunday - (int)DateTime.Now.Date.DayOfWeek = Could not evaluate expression`

Tha开发者_StackOverflow社区nks for reading.

EDIT:

Its the Immediate window that's giving me this weird result, not regular code.

Screenshot: http://ploader.net/files/0c2556df475b3075634d7fd2b0575794.PNG

EDIT2:

The community seem to think its a bug in VS2010. I wonder if @EricLippert or @JonSkeet could spare a minute to confirm this or, if its not, offer an explanation about this behaviour?


It looks specific to the constant 0 and a non-literal value. The following works just fine:

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

While the following fails:

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

Update: I couldn't find a similar bug report, so I created one: https://connect.microsoft.com/VisualStudio/feedback/details/679501/integer-literal-0-integer-variable-could-not-evaluate-expression-immediate-window

Update #2: Microsoft is able to reproduce the issue and has resolved it as "Won't Fix", meaning there's hope for the next version of Visual Studio, but not for VS2010.


I have no idea, it looks like a bug to me.

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

In any case everything behaves as expected in the compiled code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜