Директива 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"