Quand devons-nous utiliser l’opérateur checked
en C #?
Est-ce seulement approprié pour la gestion des exceptions?
Vous utiliseriez checked
pour vous protéger contre un débordement (silencieux) dans une expression.
Et utilisez cette unchecked
lorsque vous savez qu’un débordement inoffensif peut se produire.
Vous utilisez les deux à des endroits où vous ne voulez pas vous fier au paramètre de compilateur par défaut (à l’échelle du projet).
Les deux formes sont assez rares, mais lorsque vous effectuez une arithmétique entière critique, il convient de réfléchir à un débordement possible.
Notez également qu’ils se présentent sous deux formes:
x = unchecked(x + 1); // ( expression ) unchecked { x = x + 1;} // { statement(s) }
checked
vous aidera à relever System.OverFlowException
qui passera inaperçu sinon
int result = checked (1000000 * 10000000); // Error: operation > overflows at comstack time int result = unchecked (1000000 * 10000000); // No problems, comstacks fine
Des opérateurs contrôlés et non contrôlés
Les opérateurs cochés et non cochés permettent de contrôler le contexte de contrôle de débordement pour les opérations arithmétiques de type intégré et les conversions.
Dans un contexte coché, si une expression produit une valeur en dehors de la plage du type de destination, le résultat dépend du fait que l’expression soit constante ou non. Les expressions constantes entraînent des erreurs lors de la compilation, tandis que les expressions non constantes sont évaluées au moment de l’exécution et déclenchent des exceptions.
Dans un contexte non contrôlé, si une expression produit une valeur en dehors de la plage du type de destination, le résultat est tronqué.
coché , décoché
checked
ou unchecked
checked
est également utile lorsque vous faites du calcul de nombres entiers. en particulier les opérations d’incrémentation et vous savez que vous allez incrémenter au-delà de UInt32.MaxValue
et que vous voulez qu’il UInt32.MaxValue
à 0
.