Pointeurs et code unsafe (Guide de programmation C#)Unsafe code and pointers (C# Programming Guide)

Pour conserver la sécurité des types, par défaut, C# ne prend pas en charge les opérations arithmétiques sur les pointeurs.To maintain type safety and security, C# does not support pointer arithmetic, by default. Cependant, en utilisant le mot clé unsafe, vous pouvez définir un contexte non sécurisé dans lequel des pointeurs peuvent être utilisés.However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. Pour en savoir plus sur les pointeurs, consultez la rubrique Types de pointeur.For more information about pointers, see Pointer types.

Notes

Dans le common language runtime (CLR), le code non sécurisé est appelé « code non vérifiable ».In the common language runtime (CLR), unsafe code is referred to as unverifiable code. Le code non sécurisé en C# n’est pas nécessairement dangereux : il s’agit simplement de code dont la sécurité ne peut pas être vérifiée par le CLR.Unsafe code in C# is not necessarily dangerous; it is just code whose safety cannot be verified by the CLR. Le CLR exécute du code non sécurisé seulement s’il se trouve dans un assembly entièrement fiable.The CLR will therefore only execute unsafe code if it is in a fully trusted assembly. Si vous utilisez du code non sécurisé, il vous incombe de vérifier que votre code n’introduit pas de risques de sécurité ni d’erreurs de pointeur.If you use unsafe code, it is your responsibility to ensure that your code does not introduce security risks or pointer errors.

Vue d’ensemble du code unsafeUnsafe code overview

Le code non sécurisé a les propriétés suivantes :Unsafe code has the following properties:

  • Les méthodes, les types et les blocs de code peuvent être définis comme non sécurisés.Methods, types, and code blocks can be defined as unsafe.

  • Dans certains cas, le code non sécurisé peut augmenter les performances d’une application en supprimant les vérifications des limites des tableaux.In some cases, unsafe code may increase an application's performance by removing array bounds checks.

  • Du code non sécurisé est obligatoire quand vous appelez des fonctions natives nécessitant des pointeurs.Unsafe code is required when you call native functions that require pointers.

  • L’utilisation de code non sécurisé introduit des risques pour la sécurité et la stabilité.Using unsafe code introduces security and stability risks.

  • Le code qui contient des blocs unsafe doit être compilé avec l’option de compilateur -unsafe.The code that contains unsafe blocks must be compiled with the -unsafe compiler option.

Pour plus d'informations, voir :For more information, see:

spécification du langage C#C# language specification

Pour en savoir plus, consultez la rubrique Code unsafe de la spécification du langage C#.For more information, see the Unsafe code topic of the C# language specification.

Voir aussiSee also