Partager via


unsafe (référence C#)

Le unsafe mot clé désigne un contexte non sécurisé, qui est requis pour toute opération impliquant des pointeurs. Pour plus d’informations, consultez Code et pointeurs non sécurisés.

Vous pouvez utiliser le unsafe modificateur dans la déclaration d’un type ou d’un membre. L’étendue textuelle entière du type ou du membre est donc considérée comme un contexte non sécurisé. Par exemple, la méthode suivante est déclarée avec le unsafe modificateur :

unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

L’étendue du contexte non sécurisé s’étend de la liste de paramètres à la fin de la méthode, de sorte que les pointeurs peuvent également être utilisés dans la liste des paramètres :

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

Vous pouvez également utiliser un bloc non sécurisé pour activer l’utilisation d’un code non sécurisé à l’intérieur de ce bloc. Par exemple:

unsafe
{
    // Unsafe context: can use pointers here.
}

Pour compiler du code non sécurisé, vous devez spécifier l’option du compilateur AllowUnsafeBlocks . Le code non vérifiable n’est pas vérifiable par le Common Language Runtime.

Exemple :

// compile with: -unsafe
class UnsafeTest
{
    // Unsafe method: takes pointer to int.
    unsafe static void SquarePtrParam(int* p)
    {
        *p *= *p;
    }

    unsafe static void Main()
    {
        int i = 5;
        // Unsafe method: uses address-of operator (&).
        SquarePtrParam(&i);
        Console.WriteLine(i);
    }
}
// Output: 25

Spécification du langage C#

Pour plus d’informations, consultez Code non sécurisé dans la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi