Trong câu hỏi này chủ đề là làm thế nào để làm cho VS séc cho một tràn số học trong C# và ném một ngoại lệ: C# Overflow not Working? How to enable Overflow Checking?Tại sao bạn muốn tràn số nguyên xảy ra?
Một trong những ý kiến phát biểu điều gì đó kỳ lạ và đã bỏ phiếu tán nhiều, tôi hy vọng bạn có thể giúp tôi ra ở đây:
Bạn cũng có thể sử dụng từ khóa đã chọn để bọc một câu lệnh hoặc một bộ câu lệnh để chúng được kiểm tra rõ ràng về tràn số học. Việc thiết lập thuộc tính toàn dự án là một chút rủi ro vì thỉnh thoảng tràn là một kỳ vọng khá hợp lý.
Tôi không biết nhiều về phần cứng nhưng tôi biết rằng tràn phải thực hiện với cách đăng ký hoạt động. Tôi luôn luôn nghĩ rằng tràn gây ra hành vi không xác định và nên được ngăn chặn nếu có thể. (trong các dự án 'bình thường', không viết mã độc hại)
Tại sao bạn lại bao giờ mong đợi một sự cố xảy ra và tại sao bạn không luôn ngăn chặn nó nếu bạn có khả năng? (bằng cách đặt tùy chọn trình biên dịch tương ứng)
(tham khảo) http://en.wikipedia.org/wiki/Integer_overflow –
Câu lệnh của bạn "tràn gây ra hành vi không xác định" là không chính xác ... nó được xác định rất tốt, đặc biệt là trong trường hợp số nguyên. Tuyên bố của bạn "Tôi không biết nhiều về phần cứng" đang nói trong trường hợp này ... bạn nên đọc một chút về nhị phân và cách bổ sung hoạt động ở mức máy – JoelFan
Câu lệnh có thể xuất phát từ tư duy C/C++, tràn là một "hành vi không xác định" có nghĩa là người biên dịch trình biên dịch có thể làm những việc bạn không mong đợi khi tối ưu hóa. Nó không thực sự quan trọng mà CPU có một hành vi được xác định rõ ràng, trình biên dịch với biểu thức hằng số bignum đánh giá optimiser, có thể phát hiện và loại bỏ mã "nó không phải là chương trình C/C++ để tôi có thể phá vỡ nó". Tôi đoán, không ai cần quan tâm đến C#, bởi vì thời gian phần cứng mới làm việc khác, MS đã chuyển sang một số đạn bạc mới – Rob11311