English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Instructions précompilées C#

Les instructions de préprocesseur indiquent au compilateur de prétraiter les informations avant le début réel de la compilation.

Toutes les instructions de préprocesseur commencent par #. Et sur une ligne, seuls les caractères d'espace peuvent apparaître avant l'instruction de préprocesseur. Les instructions de préprocesseur ne sont pas des instructions, donc elles ne se terminent pas par un point-virgule (;).

Le compilateur C# n'a pas de préprocesseur séparé, mais les instructions sont traitées comme s'il y en avait un. Dans C#, les instructions de préprocesseur sont utilisées pour agir dans la compilation conditionnelle. Comme en C et en C++++ Ce qui est différent, c'est qu'elles ne sont pas utilisées pour créer des macros. Une instruction de préprocesseur doit être la seule instruction sur la ligne.

Liste des instructions de préprocesseur de C#

Le tableau suivant liste les instructions de préprocesseur disponibles en C#:

Instructions de préprocesseurDescription
#defineIl est utilisé pour définir une série de caractères qui deviennent des symboles.
#undefIl est utilisé pour annuler la définition d'un symbole.
#ifIl est utilisé pour tester si un symbole est vrai.
#elseIl est utilisé pour créer des instructions conditionnelles composées, avec #if.
#elifIl est utilisé pour créer des instructions conditionnelles composées.
#endifSpécifie la fin d'une instruction conditionnelle.
#lineIl vous permet de modifier le nombre de lignes du compilateur ainsi que (en option) le nom du fichier pour les erreurs et les avertissements.
#errorPermet de générer une erreur à partir d'une position spécifique du code.
#warningPermet de générer un avertissement de niveau 1 à partir d'une position spécifique du code.
#regionPermet de spécifier un bloc de code déployable ou repliable lorsque vous utilisez les fonctionnalités de l'aperçu de Visual Studio Code Editor.
#endregionIdentifie la fin d'un bloc #region.

#define est une instruction préprocesseur

#define est une instruction préprocesseur créant des constantes de symboles.

#define permet de définir un symbole, de sorte que, en utilisant le symbole comme expression passée à l'instruction #if, l'expression renverra true. Sa syntaxe est la suivante :

#define symbol

Le programme suivant illustre ce point :

#define PI 
using System;
namespace PreprocessorDAppl
{
   class Program
   {
      static void Main(string[] args)
      {
         #if (PI)
            Console.WriteLine("PI est défini");
         #else
            Console.WriteLine("PI n'est pas défini");
         #endif
         Console.ReadKey();
      }
   }
}

Lorsque le code suivant est compilé et exécuté, il produira les résultats suivants :

PI est défini

Instructions conditionnelles

Vous pouvez utiliser l'instruction #if pour créer une instruction conditionnelle. Les instructions conditionnelles sont utilisées pour tester si un symbole est vrai. Si c'est le cas, le compilateur exécutera le code entre #if et la prochaine instruction.

Syntaxe des instructions conditionnelles :

#if symbol [opérateur symbol]...

où,symbol est le nom du symbole à tester. Vous pouvez également utiliser true et false, ou placer un opérateur de négation devant le symbole.

Les opérateurs courants incluent :

  • == (égal à)

  • != (différent de)

  • && (et)

  • || (ou)

Vous pouvez également regrouper des symboles et des opérateurs avec des parenthèses. Les instructions conditionnelles sont utilisées pour compiler le code lors de la compilation en version de débogage ou avec une configuration spécifique. Une instruction #if Les instructions conditionnelles doivent être explicitement marquées par un #endif Fin de l'instruction.

Le programme suivant démontre l'utilisation des instructions conditionnelles :

#define DEBUG
#define VC_V10
using System;
public class TestClass
{
   public static void Main()
   {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG est défini");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V"}}10 est défini");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG et VC_V10 sont définis");
      #else
         Console.WriteLine("DEBUG et VC_V10 ne sont pas définis");
      #endif
      Console.ReadKey();
   }
}

Lorsque le code suivant est compilé et exécuté, il produira les résultats suivants :

DEBUG et VC_V10 sont définis