unchecked (Référence C#)

Mise à jour : novembre 2007

Le mot clé unchecked sert à supprimer le contrôle de dépassement pour les opérations arithmétiques de type entier et les conversions.

Dans 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);
}

Exemple

Cet exemple montre comment utiliser l'instruction unchecked sur des expressions constantes.

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);
    }
}
// Output: 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 aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

Checked et Unchecked (Référence C#)

checked (Référence C#)

Autres ressources

Référence C#