Les fichiers C# peuvent contenir du code conditionnel qui doit être géré par des directives de prétraitement lors du reverse engineering. Une directive de prétraitement est une commande placée au sein du code source qui demande au compilateur d'effectuer une tâche particulière avant que le reste du code ne soit analysé et compilé. La structure d'une directive de prétraitement est la suivante :
#directive symbol
# est suivi du nom de la directive, et le symbole est une constante de compilateur conditionnelle utilisée pour sélectionner des sections particulières de code et pour exclure d'autres sections.
En C#, les symboles sont dépourvus de valeur, ils peuvent être true ou false.
Dans l'exemple suivant, la directive #if est utilisée avec le symbole DEBUG pour générer un message lorsque le symbole DEBUG est vérifié (true), si DEBUG n'est pas vérifié (false), c'est un autre message qui est généré :
using System; public class MyClass { public static void Main() { #if DEBUG Console.WriteLine("DEBUG version"); #else Console.WriteLine("RELEASE version"); #endif } }
Vous pouvez déclarer une liste de symboles pour les directives de prétraitement. Ces symboles sont analysés par des directives de prétraitement : si la condition de la directive est true, l'instruction est conservée ; dans le contraire, l'instruction est supprimée.