Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
La documentation de référence du langage C# décrit la version la plus récente du langage C#. Il contient également la documentation initiale des fonctionnalités dans les préversions publiques pour la prochaine version du langage.
La documentation identifie toute fonctionnalité introduite en premier dans les trois dernières versions de la langue ou dans les préversions publiques actuelles.
Conseil / Astuce
Pour savoir quand une fonctionnalité a été introduite en C#, consultez l’article sur l’historique des versions du langage C#.
Utilisez 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 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. Vous pouvez donc également utiliser des pointeurs 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 de 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 Common Language Runtime ne peut pas vérifier le code non sécurisé.
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.