Le mot clé unchecked sert à supprimer le contrôle de dépassement pour les opérations arithmétiques de type entier et les conversions.
NotesDans un contexte non vérifié (unchecked), si une expression produit une valeur qui est hors de la plage du type de destination, le résultat est tronqué. Par exemple :
unchecked
{
int val = 2147483647 * 2;
}Le calcul précité étant exécuté dans un bloc unchecked, le fait que le résultat est trop volumineux pour un entier est ignoré, et la valeur -2 est assignée à val. Par défaut, la détection de dépassement de capacité est activée, ce qui a le même effet que l'utilisation de checked.
Dans l'exemple précité, si unchecked est omis, une erreur de compilation se produit parce que l'expression utilise des constantes et le résultat est connu au moment de la compilation. Le mot clé unchecked supprime également la détection de dépassement de capacité pour les expressions non constantes, qui surviennent généralement OverflowException à l'exécution.
Le mot clé unchecked peut également être utilisé comme un opérateur, comme suit :
public int UncheckedAdd(int a, int b)
{
return unchecked(a + b);
}
ExempleCet exemple montre comment utiliser l'instruction unchecked, à l'aide de l'instruction unchecked sur des expressions constantes.
// statements_unchecked.cs
using System;
class TestClass
{
const int x = 2147483647; // Max int
const int y = 2;
static void Main()
{
int z;
unchecked
{
z = x * y;
}
Console.WriteLine("Unchecked output value: {0}", z);
}
}Sortie
Unchecked output value: -2
Spécification du langage C#Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.
-
5.3.3.2 Instructions d'un bloc et instructions checked et unchecked
-
7.5.12 Opérateurs checked et unchecked
-
8.11 Les instructions checked et unchecked
Voir aussiRéférence
Mots clés C#Checked et Unchecked (référence C#)
checked (référence C#)
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ