Wann müssen wir den Operator checked
in C# verwenden?
Ist es nur für die Ausnahmebehandlung geeignet?Wann müssen wir den überprüften Operator in C# verwenden?
Antwort
würden Sie checked
gegen einen (stumm) Überlauf in einem Ausdruck zu schützen verwenden.
Und verwenden Sie unchecked
, wenn Sie wissen, dass ein harmloser Überlauf auftreten könnte.
Sie verwenden beide an Orten, an denen Sie nicht auf die standardmäßige (projektweite) Compilereinstellung angewiesen sind.
Beide Formen sind ziemlich selten, aber wenn man kritische Ganzzahlarithmetik durchführt, lohnt es sich, über einen möglichen Überlauf nachzudenken.
Beachten Sie auch, dass sie in zwei Formen vor:
x = unchecked(x + 1); // (expression)
unchecked { x = x + 1;} // { statement(s) }
Von The checked and unchecked operators
Die aktivierten und deaktivierten Betreiber werden verwendet, um den Überlauf zu steuern Kontrolle Kontext für Integral- Typ arithmetische Operationen und Konvertierungen.
In einem überprüften Zusammenhang, wenn ein Ausdruck einen Wert erzeugt, der außerhalb des Bereich des Zieltyp ist, das Ergebnis hängt davon ab, ob der Ausdruck konstant oder nicht konstant. Konstante Ausdrücke führen zu Kompilierungszeitfehlern, während nicht konstante Ausdrücke zur Laufzeit ausgewertet werden und Ausnahmen auslösen.
In einem ungeprüften Kontext, falls ein Ausdruck einen Wert erzeugt, die außerhalb des Bereichs des Ziel Typs ist, wird das Ergebnis abgeschnitten.
checked
wird Ihnen helfen System.OverFlowException
zu holen, die sonst unbemerkt bleiben wird
int result = checked (1000000 * 10000000);
// Error: operation > overflows at compile time
int result = unchecked (1000000 * 10000000);
// No problems, compiles fine
checked
vs. unchecked
ist auch nützlich bei der diese Zeiten, wenn Sie Ganzzahl Mathe tun. vor allem inkrementieren Operationen und Sie wissen, dass Sie über UInt32.MaxValue
inkrementieren, und wollen es harmlos überlaufen zurück zu 0
.
- 1. Wann sollten wir '===' Operator in Javascript verwenden?
- 2. Wann müssen wir implizite und explizite Operatoren in C# verwenden?
- 3. Wann müssen wir das externe Alias-Schlüsselwort in C# verwenden?
- 4. Wann müssen wir [Browsable (true)] verwenden?
- 5. Wann müssen wir float.PositiveInfinity und float.NegativeInfinity verwenden?
- 6. Wann müssen wir java.sql.Connection.rollback() aufrufen?
- 7. Wann müssen wir $ digest() in der realen Entwicklung verwenden?
- 8. Wann verwenden wir POJO und wann verwenden wir SLSB
- 9. Wann müssen wir einen Proxy-Service erstellen und wann müssen wir Rest Api erstellen?
- 10. Wann müssen wir delegate mit "static" voranstellen?
- 11. SPL vs. Array: Wann sollten wir SPL verwenden und wann sollten wir Array in PHP verwenden?
- 12. Wo/wann verwenden wir JSON?
- 13. Wann extern C in C++ zu verwenden?
- 14. Wann zu verwenden === Operator-Check in JavaScript?
- 15. Jedis - Wann verwenden wir returnBrokenResource()
- 16. Wann/wo wir XMLRPC verwenden
- 17. wann/wo wir PDO verwenden?
- 18. In welcher Situation müssen wir `multiprocessing.Pool.imap_unordered` verwenden?
- 19. Müssen wir jemals Iteratoren in ArrayList verwenden?
- 20. In C++ 11 wann sollten wir explizit std :: cerase verwenden?
- 21. Wann müssen wir die NDK für OpenCV Android
- 22. Können wir verwenden? Operator in sql
- 23. C# Initializer-Liste - wann() Operator nach Klassenname zu verwenden?
- 24. Wann sollten wir nicht den Domain-Driven Design-Ansatz verwenden?
- 25. Wann verwenden wir den antiMatcher() von Spring Security?
- 26. Müssen wir immer ein asynchrones Schlüsselwort verwenden?
- 27. Wann muss ich den neuen Operator bei der Deklaration von Knoten in C++ verwenden?
- 28. Warum müssen wir Platz vor% c setzen?
- 29. Wann können wir ClearAllPools-Methode verwenden?
- 30. Wann Zeiger in C++ zu verwenden sind
OK, das sind sie. Könnten Sie näher ausführen, wann Sie es tun wollen? – NotMe