Kiedy należy użyć operatora checked
w języku C#?
Czy nadaje się tylko do obsługi wyjątków?Kiedy musimy używać sprawdzonego operatora w C#?
Odpowiedz
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) }
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
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
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
.
- 1. Kiedy używać operatora "^"
- 2. Kiedy używać Class.isInstance() i kiedy używać operatora instanceof?
- 3. kiedy używać === sprawdzanie operatora w JavaScript?
- 4. Kiedy używać zewnętrznego "C" w C++?
- 5. Dlaczego musimy używać radix?
- 6. Kiedy używać wskaźnika do wskaźnika w C++?
- 7. kiedy używać void * w C++
- 8. C++: kiedy używać wskaźników?
- 9. Konwencja dotycząca celu C: kiedy używać i kiedy używać z
- 10. Kiedy używać makr funkcyjnych, jak w C
- 11. Golang: kiedy używać wskaźników
- 12. Kiedy używać viewDidLoad i kiedy używać awakeFromNib
- 13. Kiedy powinienem zdefiniować swojego własnego operatora i operatora przypisania
- 14. Kiedy używać node.js i kiedy używać ajax?
- 15. Czy zawsze musimy używać asynchronicznego słowa kluczowego?
- 16. kiedy używać zadania i kiedy używać wątku?
- 17. Czy mogę używać GCC __builtin_expect() z Ternary operatora w C
- 18. Dlaczego musimy zablokować i obiekt w C#?
- 19. Przeciążanie operatora -> * w C++
- 20. C# USING keyword - kiedy i kiedy go nie używać?
- 21. C# w operatora przeciążenia
- 22. Przeciążanie operatora w C++
- 23. Przeciążanie operatora + w C++
- 24. W Objective-C, kiedy należy używać metod klas i kiedy należy używać metod instancji?
- 25. Kiedy używać dup i kiedy używać klonu w Ruby?
- 26. Kiedy używać Q_NULLPTR?
- 27. Kiedy używać hashtable
- 28. Kiedy używać Parallel.For?
- 29. Co to jest użycie dyrektywy pre-procesora #if DEBUG w C#? Kiedy musimy tego użyć?
- 30. Czy musimy używać __weak self wewnątrz UIAnimationBlocks w ARC?
OK, to właśnie one ... Czy możesz je opracować, kiedy chcesz to zrobić? – NotMe