Компилируется для экспериментальной версии.



Присутствует во всех версиях.

 

В приведенном выше коде определяется идентификатор EXPERIMENTAL. Поэтому когда в этом коде встречается директива #if, идентификаторное выражение вычисляется как истинное и затем компилируется первый оператор, содержащий вызов метода WriteLine(). Если же удалить определение идентификатора EXPERIMENTAL и перекомпилировать данный код, то первый оператор, содержащий вызов метода WriteLine(), не будет скомпилирован, поскольку идентификаторное выражение директивы #if вычисляется как ложное. Но второй оператор, содержащий вызов метода WriteLine(), компилируется в любом случае, потому что он не входит в блок директивы #if.

Как пояснялось выше, в директиве #if допускается указывать идентификаторное выражение. В качестве примера рассмотрим следующую программу.

 

// Использовать идентификаторное выражение.

#define EXPERIMENTAL  

#define TRIAL

using System;

class Test {

static void Main() {

If EXPERIMENTAL

Console.WriteLine("Компилируется для экспериментальной версии.");

Endif

#if EXPERIMENTAL && TRIAL

Console.Error.WriteLine("Проверка пробной экспериментальной версии. ") ;

Endif

Console.WriteLine("Присутствует во всех версиях.");

}

}

 

Эта программа дает следующий результат.

 

Компилируется для экспериментальной версии.

Проверка пробной экспериментальной версии.

Присутствует во всех версиях.

 

В данном примере определены два идентификатора: EXPERIMENTAL и TRIAL. Второй оператор, содержащий вызов метода WriteLine(), компилируется лишь в том случае, если определены оба идентификатора.

Для компилирования кода в том случае, если идентификатор не определен, можно воспользоваться оператором !, как в приведенном ниже примере.

 

#if !EXPERIMENTAL

Console.WriteLine("Этот код не экспериментальный!");

#endif

 

Вызов метода будет скомпилирован только в том случае, если идентификатор EXPERIMENTAL не определен.

 

 

Директивы #else и #elif

 

Директива #else действует аналогично условному оператору else языка С#, определяя альтернативный ход выполнения программы, если этого не может сделать директива #if. С учетом директивы #else предыдущий пример программы может быть расширен следующим образом.

 

// Продемонстрировать применение директивы #else.

#define EXPERIMENTAL

using System;

class Test {

static void Main() {

If EXPERIMENTAL

Console.WriteLine("Компилируется для экспериментальной версии.");

Else

Console.WriteLine("Компилируется для окончательной версии.");

Endif

#if EXPERIMENTAL && TRIAL

Console.Error.WriteLine("Проверка пробной экспериментальной версии.");

Else

Console.Error.WriteLine("Это не пробная экспериментальная версия.");

Endif

Console.WriteLine("Присутствует во всех версиях.");

}

}

 

Вот к какому результату приводит выполнение этой программы.

 

Компилируется для экспериментальной версии.

Это не пробная экспериментальная версия.

Присутствует во всех версиях.

 

В данном примере идентификатор TRIAL не определен, и поэтому часть #else второй условной последовательности кода не компилируется.

Обратите внимание на то, что директива #else обозначает конец блока директивы #if и в то же время — начало блока самой директивы #else. Это необходимо потому, что с любой директивой #if может быть связана только одна директива #endif. Более того, с любой директивой #if может быть связана только одна директива #else.

Обозначение #elif означает "иначе если", а сама директива #elif определяет последовательность условных операций if-else-if для многовариантной компиляции. После директивы #elif указывается идентификаторное выражение. Если это выражение истинно, то компилируется следующий далее кодовый блок, а остальные выражения директивы #elif не проверяются. В противном случае проверяется следующий по порядку блок. Если же ни одну из директив #elif не удается выполнить, то при наличии директивы #else выполняется последовательность кода, связанная с этой директивой, а иначе не компилируется ни один из кодовых блоков директивы #if. Ниже приведена общая форма директивы #elif.

 

#if идентификаторное_выражение


Дата добавления: 2019-02-12; просмотров: 232; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!