开发者

Weird Issue with DateTime calculation

开发者 https://www.devze.com 2023-03-20 14:03 出处:网络
I\'ve probably been working too hard, but can someone explain to me the following, taken from the Immediate window?

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

精彩评论

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