Partager via


unsafe (référence C#)

Le mot clé unsafe indique un contexte non sécurisé, qui est requis pour toute opération impliquant des pointeurs. Pour plus d'informations, consultez Pointeurs et code unsafe (Guide de programmation C#).

Vous pouvez utiliser le modificateur unsafe dans une déclaration de type ou de membre. L'étendue textuelle complète du type ou du membre est ainsi considérée comme un contexte non sécurisé. Par exemple, la méthode suivante est déclarée avec le modificateur unsafe :

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

La portée du contexte non sécurisé s'étend de la liste de paramètres à la fin de la méthode, de sorte que les pointeurs puissent aussi être utilisés dans la liste de 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 unsafe au sein de ce bloc. Par exemple :

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

Pour compiler du code unsafe, vous devez spécifier l'option du compilateur /unsafe. Le code unsafe 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 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

Référence

Mots clés C#

fixed, instruction (référence C#)

Pointeurs et code unsafe (Guide de programmation C#)

Mémoires tampons de taille fixe (Guide de programmation C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#