2010-03-02 12 views

Odpowiedz

14

byłoby użyć checked strzec przed przelewem (cichy) w wyrażeniu.
Należy użyć unchecked, gdy wiadomo, że może wystąpić nieszkodliwe przekroczenie.

Korzystasz z obu w miejscach, w których nie chcesz polegać na domyślnym ustawieniu kompilatora (w całym projekcie).

Obie formy są dość rzadkie, ale podczas wykonywania krytycznej arytmetyki liczb całkowitych warto pomyśleć o możliwym przepełnieniu.

Należy również pamiętać, że pochodzą one w dwóch postaciach:

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

Od The checked and unchecked operators

Sprawdzona i operatorzy niesprawdzonych są wykorzystywane do kontrolowania przepełnienia sprawdzanie kontekst integralną typu operacji arytmetycznych i konwersje.

W kontekście sprawdzane, czy wyrazem wytwarza wartość, która jest poza zakresem typu docelowego wynik zależy od tego, czy ekspresja jest stała lub nie stała. Stałe wyrażenia powodują błędy czasu kompilacji, podczas gdy wyrażenia niestanowiące stałych są oceniane w czasie wykonywania i podnoszą wyjątki.

W niesprawdzony kontekście, jeśli wyrazem wytwarza wartość, która jest poza zasięgiem rodzaju przeznaczenia , wynik jest obcięty.

checked, unchecked

+1

OK, to właśnie one ... Czy możesz je opracować, kiedy chcesz to zrobić? – NotMe

6

checked pomogą Ci podnieść System.OverFlowException który przejdzie niezauważony inaczej

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

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

checked vs. unchecked jest również przydatna w te czasy, kiedy robisz matematykę całkowitą. szczególnie zwiększające się operacje i wiesz, że będziesz zwiększać wartość o UInt32.MaxValue i chcesz, aby nieszkodliwie przepełnił się z powrotem do 0.

Powiązane problemy