Поделиться через


#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#

Ссылки

Директивы препроцессора C#

Другие ресурсы

Справочник по C#