2010-10-20 42 views
5

Chỉ trên máy của tôi điều này xảy ra. Về cơ bản nếu tôi chạy sau tất cả là như mong đợi:Tại sao truyền luôn luôn trả về số không khi gỡ lỗi trong VS2010?

 double d = 500.22; 
     int i = (int)d; 
     Console.WriteLine(i.ToString()); 

Output là 500.

Tuy nhiên nếu tôi đặt một breakpoint trên dòng đầu tiên và bước qua, tôi luôn luôn trở lại trạng không và đầu ra là 0.

Tôi đã thử nghiệm điều này trên các máy khác và tôi không thể sao chép, thậm chí tôi đã cài đặt lại VS2010 và nó vẫn xảy ra. Vì vậy, tôi nghĩ rằng nó phải được một số loại môi trường thiết lập mà tôi có trên hệ thống của tôi, nhưng tôi không thể tìm ra những gì.

Bất kỳ ai khác có vấn đề này và làm cách nào để loại bỏ vấn đề này.

Chúc mừng.

CHỈNH SỬA: Dường như sự cố chỉ xảy ra với dòng thứ hai. Nếu tôi đặt một điểm phá vỡ trên dòng 1 và sau đó chỉ cần F5 trên nó, sau đó nó là tất cả ok. Nhưng nếu tôi bước vào/trên dòng thứ 2, quá trình truyền dường như không hoạt động và tôi vẫn ở 0.
Tôi cũng đã thử đặt i thành 1 trước và sau đó nhìn thấy nếu dàn diễn viên hoạt động, nhưng nó thay đổi trở lại 0 và loại bỏ giá trị ban đầu của tôi về 1.

Dưới đây là một ảnh chụp màn hình:

alt text

+0

Bạn đã từng bước hay đã từng bước? – codymanix

+0

Nếu bạn có nghĩa là bước vào hoặc hơn, sau đó tôi đã làm cả hai. – HAdes

+0

Bạn có thể cung cấp ảnh chụp màn hình không? Bạn có nói rằng trình gỡ rối nói rằng i == 0 trong chú giải công cụ khi di chuột? Hoặc hiện nó i == 0 trong cửa sổ xem? Hoặc ngay lập tức cửa sổ? Mã của bạn khi điều đó xảy ra ở đâu? Breaking tại Console.WriteLine? – sisve

Trả lời

0

Cố gắng chạy VS với /SafeMode hoặc /ResetSettings args dòng lệnh

+0

cảm ơn đề nghị, tuy nhiên vẫn còn điều tương tự xảy ra. – HAdes

1

bạn có tất cả các dịch vụ .NET Framework mới nhất bản vá lỗi? Có một số thậm chí cho khung 4.0, mặc dù tôi đã không nghe nói về bất cứ điều gì như thế này được nêu ra.

* Chỉnh sửa *
Về lời đề nghị khác của tôi, đúc đến một int truncates, và Convert.ToInt32 viên đạn, vì vậy Convert.ToInt32 là những gì bạn thường muốn anyway (đặc biệt là nếu nó làm việc).

+0

Tôi nghĩ rằng tôi hoàn toàn cập nhật khi chạy cập nhật cửa sổ không chọn bất cứ thứ gì. – HAdes

+0

đó là một điểm tốt, tôi đã không nhận ra rằng đúc cắt ngắn và không tròn. Tôi luôn tự hỏi sự khác biệt là gì. cổ vũ. – HAdes

0

Lưu ý rằng trong ảnh chụp màn hình của bạn, bạn không được xuất ra i, bạn xuất ra d --Bạn không thực sự sử dụng i. Tôi không thể repro hành vi bạn đã mô tả, nhưng tôi nhận được gần nếu tôi đặt một breakpoint trên WriteLine trong chế độ phát hành: i thậm chí không tồn tại trong trường hợp đó. Nhưng tại sao nên, bạn không sử dụng nó. (Lưu ý tôi đã sử dụng mã trong ảnh chụp màn hình của bạn để repro, không phải mã thực sự sử dụng i.)

+0

Rất tiếc, xin lỗi, tôi đã sửa đổi để xem nó sẽ làm gì, nhưng vẫn là vấn đề tương tự. Dù sao, đó là irrelvant là vấn đề là với dòng thứ 2 không phải với dòng console. Tôi sẽ cố gắng và repo vấn đề chế độ phát hành của bạn và xem. – HAdes

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