2011-07-14 42 views
7

Tôi có thể đã làm việc quá chăm chỉ, nhưng ai đó có thể giải thích cho tôi những điều sau đây, được lấy từ cửa sổ Immediate?Vấn đề lạ với tính toán DateTime

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

(int)DayOfWeek.Sunday = 0

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

nhưng
(int)DayOfWeek.Sunday - (int)DateTime.Now.Date.DayOfWeek = Không thể đánh giá expression`

Cảm ơn bạn đã đọc.

CHỈNH SỬA:

Cửa sổ ngay lập tức mang lại cho tôi kết quả kỳ lạ này, không phải mã thông thường.

Ảnh chụp màn hình: http://ploader.net/files/0c2556df475b3075634d7fd2b0575794.PNG

EDIT2:

Cộng đồng dường như nghĩ rằng nó là một lỗi trong VS2010. Tôi tự hỏi liệu @EricLippert hoặc @JonSkeet có thể dành một phút để xác nhận điều này hay không, nếu không, đưa ra lời giải thích về hành vi này?

+0

Điều này phù hợp với tôi. Bạn có thể đăng tất cả mã của mình không? Có lẽ có cái gì khác đang xảy ra ở đây? – Jay

+0

Mã không phải của nó, chỉ là đầu ra của các biểu thức đặc biệt trong cửa sổ ngay lập tức. – 5arx

+1

@Jay Tôi đoán là anh ấy đang nói về cửa sổ ngay lập tức khi gỡ lỗi - Tôi đã thử nó và nó không hoạt động, nhưng tôi không biết tại sao. – Justin

Trả lời

5

Có vẻ cụ thể đối với hằng số 0 và giá trị không phải là chữ. Các công việc sau tốt:

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

Trong khi sau thất bại:

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

Cập nhật: Tôi không thể tìm thấy một báo cáo lỗi tương tự, vì vậy tôi tạo ra một: https://connect.microsoft.com/VisualStudio/feedback/details/679501/integer-literal-0-integer-variable-could-not-evaluate-expression-immediate-window

Update # 2: Microsoft có thể tái tạo vấn đề và đã giải quyết nó là "Không khắc phục", có nghĩa là có hy vọng cho phiên bản tiếp theo của Visual Studio, nhưng không phải cho VS2010.

+0

Tôi đồng ý với điều đó. Chắc chắn là một lỗi của nó? Tôi có nhận được một số giải thưởng để đưa điều này đến sự chú ý của eggheads trong nhóm dự án Visual Studio không? ;-) – 5arx

+1

Có lẽ không, nhưng nếu Eric Lippert đọc nó, bạn có thể sửa nó trong bản phát hành kế tiếp. –

+0

Tôi hy vọng @EricLippert đang đọc. – 5arx

3

Tôi không biết, có vẻ như một lỗi đối với tôi.

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

Trong mọi trường hợp, mọi thứ đều hoạt động như dự kiến ​​trong mã được biên dịch.

+0

Cảm ơn Chúa vì điều đó. Tôi nghĩ rằng tôi đã bắt đầu phát điên. – 5arx

Các vấn đề liên quan