#if (Справочник по C#)
Обновлен: Ноябрь 2007
C помощью #if можно начать условную директиву, проверяющую один или несколько символов на получение значения true. При вычислении значения true компилятор вычисляет весь код межу #if и ближайшей директивой #endif. Например:
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug version");
#endif
Для вычисления символов можно использовать операторы == (равенство), != (неравенство), && (И) и || (ИЛИ). Можно группировать символы и операторы при помощи скобок.
Заметки
Директива #if, вместе с директивами #else, #elif, #endif, #define и #undef, позволяет включать или исключать код на основе условия одного или нескольких символов. Это может понадобиться при компиляции кода для построения отладки или при компиляции для определенной конфигурации.
Условная директива, начинающаяся с директивы #if, должна быть явным образом оканчиваться директивой #endif.
Директива #define позволяет определить символ, который, при его использовании в качестве выражения, переданного директиве #if, приведет к получению значения true.
Также можно определить символ с помощью параметра компилятора /define. Для отмены определения символа служит директива #undef.
Символ, определенный с помощью /define или #define, не конфликтует с одноименной переменной. Имя переменной не должно передаваться директиве предварительной обработки, а символ может вычисляться только директивой предварительной обработки.
Область символа создается с помощью директивы #define в файле, в котором символ был определен.
Пример
// preprocessor_if.cs
#define DEBUG#define VC_V7
using System;
public class MyClass
{
static void Main()
{
#if (DEBUG && !VC_V7)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
Console.WriteLine("DEBUG and VC_V7 are defined");
#else
Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
}
}
DEBUG and VC_V7 are defined
См. также
Основные понятия
Руководство по программированию в C#