2010-03-02 40 views

Trả lời

14

Bạn sẽ sử dụng checked để bảo vệ chống lại một (im lặng) tràn trong một biểu thức.
Và sử dụng unchecked khi bạn biết một luồng tràn vô hại có thể xảy ra.

Bạn sử dụng cả hai ở những nơi bạn không muốn dựa vào cài đặt trình biên dịch mặc định (toàn bộ dự án).

Cả hai biểu mẫu đều khá hiếm, nhưng khi thực hiện số học số nguyên quan trọng, bạn nên cân nhắc về tràn có thể.

Cũng lưu ý rằng họ có hai hình thức:

x = unchecked(x + 1); // (expression) 
unchecked { x = x + 1;} // { statement(s) } 
3

Từ The checked and unchecked operators

Các kiểm tra và vận hành được kiểm soát được sử dụng để kiểm soát tràn bối cảnh kiểm tra không thể thiếu loại phép tính số học và chuyển đổi.

Trong một bối cảnh kiểm tra, nếu một biểu tạo ra một giá trị mà nằm ngoài loạt các loại đích, các kết quả phụ thuộc vào việc biểu là hằng số hoặc không liên tục. Biểu thức không đổi gây ra lỗi thời gian biên dịch, trong khi biểu thức không liên tục được đánh giá khi chạy và tăng ngoại lệ.

Trong ngữ cảnh không được chọn, nếu biểu thức tạo ra giá trị là ngoài phạm vi đích đến , kết quả sẽ bị cắt bớt.

checked, unchecked

+1

OK, đó là những gì họ đang có .. Bạn có thể giải thích khi bạn muốn làm điều đó không? – NotMe

6

checked sẽ giúp bạn nhặt System.OverFlowException mà sẽ không được chú ý khác

int result = checked (1000000 * 10000000); 
    // Error: operation > overflows at compile time 

int result = unchecked (1000000 * 10000000); 
    // No problems, compiles fine 
3

checked vs unchecked cũng rất hữu ích trong những lúc bạn đang làm toán số nguyên. đặc biệt là các hoạt động gia tăng và bạn biết bạn sẽ tăng quá UInt32.MaxValue và muốn nó hoạt động vô hại tràn ngược trở lại 0.

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