Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
81 of 1492 menu
◀ ▶

Директива if

Директива if (запись "#if") проверяет символы условной компиляции и вырезает лишние строки ещё до сборки. Внутри блока допустимы elif, else и закрывающая endif. Это не условный оператор if внутри Main: отключённая ветка не попадает в сборку. Чтобы вывод в примере был предсказуемым, символ задают через define в начале файла.

Синтаксис

#if условие_символов // код первой ветки #elif другое_условие // код второй ветки #else // код по умолчанию #endif

Пример

Давайте объявим символ DEMO_LOG и оставим нужную ветку:

#define DEMO_LOG using System; class Program { static void Main() { #if DEMO_LOG Console.WriteLine("log on"); #else Console.WriteLine("log off"); #endif } }

Результат выполнения кода:

"log on"

Пример

Давайте выберем ветку через #elif, когда первый символ не объявлен:

#define BRANCH_B using System; class Program { static void Main() { #if BRANCH_A Console.WriteLine("branch a"); #elif BRANCH_B Console.WriteLine("branch b"); #else Console.WriteLine("none"); #endif } }

Результат выполнения кода:

"branch b"

Пример

Давайте проверим отрицание символа через !:

#define DEMO using System; class Program { static void Main() { #if DEMO && !STRICT Console.WriteLine("demo"); #else Console.WriteLine("strict"); #endif } }

Результат выполнения кода:

"demo"

Смотрите также

  • директива endif,
    которая закрывает блок #if
  • директива define,
    которая объявляет символ для #if
  • директива undef,
    которая снимает символ перед проверкой
  • условный оператор if,
    который выбирает код во время выполнения
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить