Герберт Шилдт - C# 4.0 полное руководство - 2011

Тут можно читать онлайн Герберт Шилдт - C# 4.0 полное руководство - 2011 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание

C# 4.0 полное руководство - 2011 - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)

C# 4.0 полное руководство - 2011 - читать книгу онлайн бесплатно, автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Принимая во внимание современную объектно-ориентированную архитектуру языка С#, потребность в директивах препроцессора в нем не столь велика, как в языках программирования предыдущих поколений. Тем не менее они могут быть иногда полезными, особенно для условной компиляции. В этом разделе все директивы препроцессора рассматриваются по очереди.

Директива #define

Директива # define определяет последовательность символов, называемую идентификатором. Присутствие или отсутствие идентификатора может быть определено с помощью директивы #if или #elif и поэтому используется для управления процессом компиляции. Ниже приведена общая форма директивы # define.

#define идентификатор

Обратите внимание на отсутствие точки с запятой в конце этого оператора. Между директивой # define и идентификатором может быть любое количество пробелов, но после самого идентификатора должен следовать только символ новой строки. Так, для определения идентификатора EXPERIMENTAL служит следующая директива.

#define EXPERIMENTAL

ПРИМЕЧАНИЕ

В C/C++ директива # defineможет использоваться для подстановки исходного текста, например для определения имени значения, а также для создания макрокоманд, похожих на функции. А в C# такое применение директивы #defineне поддерживается. В этом языке директива #define служит только для определения идентификатора.

Директивы #if и #endif

Обе директивы, #if и #endif, допускают условную компиляцию последовательности кода в зависимости от истинного результата вычисления выражения, включающего в себя один или несколько идентификаторов. Идентификатор считается истинным, если он определен, а иначе — ложным. Так, если идентификатор определен директивой #define, то он будет оценен как истинный. Ниже приведена общая форма директивы #if .

#if идентификаторное_выражение последовательность операторов #endif

Если идентификаторное_выражение, следующее после директивы #if, истинно, то компилируется код (последовательность операторов), указываемый между ним и директивой #endif. В противном случае этот промежуточный код пропускается. Директива #endif обозначает конец блока директивы #if.

Идентификаторное выражение может быть простым, как наименование идентификатора. В то же время в нем разрешается применение следующих операторов: !, ==, ! =, & & и | |, а также круглых скобок.

Ниже приведен пример применения упомянутых выше директив.

// Продемонстрировать применение директив // #if, #endif и #define.

#define EXPERIMENTAL

using System;

class Test {

static void Main() {

#if EXPERIMENTAL

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

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

}

}

Этот код выдает следующий результат.

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

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

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

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

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

#define EXPERIMENTAL #define TRIAL

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("Присутствует во всех версиях.");

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0 полное руководство - 2011 отзывы


Отзывы читателей о книге C# 4.0 полное руководство - 2011, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x