unsafe (référence C#)

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

Vous pouvez utiliser le modificateur unsafe dans la déclaration d’un type ou d’un membre. Toute l’étendue de texte du type ou du membre est ainsi considérée comme un contexte unsafe. Par exemple, ce qui suit est une méthode 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 unsafe 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 de paramètres :

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

Vous pouvez également avoir recours à un bloc unsafe pour utiliser un code unsafe dans ce bloc. Exemple :

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

Pour compiler du code unsafe, vous devez spécifier l’option de compilateur /unsafe. Le code unsafe n’est pas vérifiable par le service CLR (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, voir 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

Informations de référence sur C#
Guide de programmation C#
Mots clés C#
fixed, instruction
Pointeurs et code unsafe
Mémoires tampons de taille fixe