Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

С = (А = В);

Этот код задает

А
равным значению
В
, а затем то же самое значение присваивает
С
. Можно также написать эту инструкцию более просто:

С = А = В;

Обычное использование такого синтаксиса состоит в вычислении некоторого условия внутри инструкции

if
и одновременном задании результата этого условия в виде переменой типа
bool
(эквивалент в C# для
Boolean
из VB), чтобы можно было использовать это значение позже:

// предположим, что X и Y — переменные, которые были инициализированы.

bool В;

if (В = (X==Y)) DoSomething;

Этот код выглядит пугающим на первый взгляд, но он вполне логичен. Давайте разберем его. Прежде всего компьютер проверяет условие

X == Y
. В зависимости от того, содержат ли
X
и
Y
одинаковые данные, оно возвратит
true
или
false
и это значение будет присвоено переменной
В
. Однако поскольку оператор присваивания также возвращает значение, которое было только что присвоено все выражение
В = (X==Y)
также будет возвращать то же самое значение (
true
или
false
). Это возвращаемое значение затем используется предложением
if
для определения, нужно ли выполнять условную инструкцию
DoSometning
. В результате этого кода условие
X == Y
проверяется для выяснения, должны ли выполняться условные инструкции, и в то же самое время результаты этой проверки сохраняются в переменной
В
.

Тернарный оператор

В этом приложении нет места для обсуждения всех доступных в C# операторов. Они подробно рассмотрены в главах 3-6. Однако упомянем тернарный оператор (известный также как условный оператор), так как он имеет очень необычный синтаксис. Тернарный оператор формируется из двух символов —

?
и
:
. Он имеет три параметра и на самом деле эквивалентен инструкции
If
в VB. Синтаксически используется следующие образом:

// В, X и Y являются некоторыми переменными или выражениями.

// В является Boolean.

B ? X : Y

и работает так: оценивается первое выражение, которое расположено перед символом

?
, если оно оценивается как
true
, то возвращается результат второго выражение но если оно оценивается как
false
, то вместо этого возвращается результат третьего выражения. Это предоставляет предельно компактный синтаксис для условного задания значения переменной. Например, можно написать:

int Z = (Х==Y) ? 5 : 8;

что будет иметь такой же результат, как и следующие вычисления:

int Z;

if (X==Y) Z = 5;

else Z = 8;

Заключение

В этом приложении было представлено краткое введение в C# с точки зрения сравнения его с Visual Basic. Мы обнаружили довольно мало различий в синтаксисе. В целом синтаксис C# позволяет выразить большинство инструкций более компактным образом. Также можно заметить большое сходство между языками, например в их использовании классов (или модулей классов в VB), типов данных значений, ссылочных типов данных и многих синтаксических структур. Однако C# поддерживает также многие мощные свойства, в частности связанные с наследованием и классическим объектно-ориентированным программированием, которые недоступны в VB.

Выполнение перехода от VВ к C# требует специальной подготовки, но стоит того, так как методология C# позволяет не только кодировать приложения, которые можно сделать в VB но также множество других приложений которые было бы трудно или невозможно создать в VB хорошо структурированными и легко поддерживаемыми. При использовании C# можно также получить дополнительный бонус среды выполнения .NET и всех связанных с этим преимуществ. 

Приложeниe D

Параметры компиляции C#

Это приложение перечисляет различные параметры компиляции C#, которые можно применять, если необходимо компилировать проекты C#, не используя возможности Visual Studio.NET, или если необходимо выполнить операции компилятора, не поддерживаемые Visual Studio.NET. Они организованы как последовательность таблиц, составленных согласно категориям.

Первая таблица показывает различные форматы файлов, которые может выводить компилятор:

Параметр Назначение
/doc:<имя файла>
Обрабатывает комментарии документации XML (помеченные тремя слэшами —
///
) и выводит в указанный файл XML.
/nooutput
Компилирует код, но не создает файла вывода; полезно для отладочных целей, так как консоль будет показывать предупреждения и ошибки.
/out:<имя файла>
Определяет имя файла вывода. Если оно не указано, то компилятор создает стандартный файл .exe с тем же именем, что и у исходного файла (кроме расширения).
/target:<option> /t:<option>
Определяет формат файла вывода в одном из четырех вариантов:
exe
: создает стандартный исполняемый файл (задание по умолчанию).
library
: создает код библиотеки (DLL).
module
: создает модуль кода (сборку без манифеста), который позже добавляется к сборке (с помощью
/addmodule
).
winexe
: создает исполняемый файл для Windows.

Если только не определен параметр

/target:module
, компилятор будет добавлять манифест в создаваемый
ЕХЕ файл (или первый файл DLL, если ЕХЕ не создается). Отметим, что
/target
можно сократить до
/t
.

Следующая таблица объясняет параметр командной строки для определения оптимизации компилятора.

Параметр Назначение
/optimize<+ | -> /о<+ | ->
Включает или выключает оптимизацию, выполняемую компилятором для создания более короткого, быстрого и эффективного вывода. Отключено по умолчанию. Чтобы включить, применяйте синтаксис:
/optimize
или
/optimize+
Чтобы выключить, применяйте синтаксис:
/optimize-

Следующая таблица описывает параметры, которые используются, когда создают и ссылаются на сборки .NET.

Параметр Назначение
/addmodule:<модуль>
Определяет один или несколько модулей, которые будут включены в указанную сборку. Если модулей более одного, то они разделяются с помощью точки с запятой. Этот параметр недоступен в Visual Studio.NET
/nostdlib<+ | ->
Определяет, нужно или нет импортировать стандартную библиотеку (
mscorlib.dll
), которая импортируется по умолчанию. Если желательно реализовать свое собственное пространство имен и классы
System
, то компилятор не будет загружать стандартную библиотеку. Синтаксис для этого выглядит следующим образом:
/nostdlib
или
/nostdlib+
Синтаксис для импортирования следующий:
/nostdlib-
/reference:<сборка> /r:<сборка>
Импортирует метаданные из файла сборки. Можно определить полный путь доступа к сборке, или определенный везде с помощью переменной окружения
PATH
, либо относительный путь начинающийся в текущем проекте. Если имеется больше одного файла, они разделяются посредством точки с запятой.

Следующая таблица объясняет параметры, которые применяются при отладке и контроле ошибок.

Параметр Назначение
/bugreport <имя файла>
Создает указанный файл, который содержит всю информацию об ошибках, выданную компилятором. Содержимое файла включает: копию всего исходного кода, листинг параметров компилятора, информацию о версии компилятора, операционной системе и т.д., всю выдачу компилятора, описание проблемы и возможное решение (по желанию). Эта возможность недоступна в Visual Studio.NET.
/checked<+ | ->
Определяет, даст ли превышение над заданным значением целого числа ошибку времени выполнения. Это применимо только к коду вне области действия блоков
checked
и
unchecked
. Отключено по умолчанию. Синтаксис для контроля переполнения следующий:
/checked
или
/checked+
. Чтобы отключить контроль переполнения, используйте следующий синтаксис:
/checked-
/debug<+ | -> /debug:<option>
Создает информацию отладки. Чтобы включить, используйте синтаксис:
/debug
или
/debug+
. Чтобы отключить, используйте:
/debug-
. Отладка отключена по умолчанию. Если определить, что должна выводиться информация отладки, то имеются две возможности в отношении типа создаваемой информации отладки:
/debug:full
: разрешает соединение отладчика с операционной системой.
/Debug:pdbonly
: разрешает отладку исходного кода, когда программа запускается в отладчике, но будет выводить только ассемблерный код, когда выполняющаяся программа присоединяется к отладчику.
/fullpaths
Определяет полный путь доступа к файлу, содержащему ошибку. Эта возможность недоступна в Visual Studio.NET.
/nowarn:<number>
Подавляет способность компилятора создавать специальные предупреждения. Параметр
number
определяет, какой номер предупреждения подавить. Если определено более одного, то они разделяются запятыми. Это параметр недоступен в Visual Studio.NET.
/warn:<option> /w:<option>
Задает минимальный уровень предупреждений, который желательно выводить. Параметр
option
показывает: 0: Подавление всех предупреждений. 1: Вывод только серьезных предупреждений. 2: Вывод серьезных предупреждений и предупреждений среднего уровня. 3: Вывод серьезных предупреждений, предупреждений среднего и низкого уровня. 4: Вывод всех сообщений, включая информационные предупреждения
/warnaserror<+ | ->
Интерпретирует все предупреждения как ошибки. Чтобы включить, используйте синтаксис:
/warnaserror
или
/warnaserror+
. Чтобы отключить, используйте синтаксис:
/warnaserror-
. Отключено по умолчанию.
Поделиться:
Популярные книги

Эволюционер из трущоб. Том 7

Панарин Антон
7. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 7

Девочка для Генерала. Книга первая

Кистяева Марина
1. Любовь сильных мира сего
Любовные романы:
остросюжетные любовные романы
эро литература
4.67
рейтинг книги
Девочка для Генерала. Книга первая

Темный Патриарх Светлого Рода

Лисицин Евгений
1. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода

Цусима — знамение конца русской истории. Скрываемые причины общеизвестных событий. Военно-историческое расследование. Том II

Галенин Борис Глебович
Научно-образовательная:
военная история
5.00
рейтинг книги
Цусима — знамение конца русской истории. Скрываемые причины общеизвестных событий. Военно-историческое расследование. Том II

Бракованная невеста. Академия драконов

Милославская Анастасия
Фантастика:
фэнтези
сказочная фантастика
5.00
рейтинг книги
Бракованная невеста. Академия драконов

Новый Рал 10

Северный Лис
10. Рал!
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Новый Рал 10

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Боевой маг. Трилогия

Бадей Сергей
114. В одном томе
Фантастика:
фэнтези
9.27
рейтинг книги
Боевой маг. Трилогия

Сердце для стража

Каменистый Артем
5. Девятый
Фантастика:
фэнтези
боевая фантастика
9.20
рейтинг книги
Сердце для стража

Тайны затерянных звезд. Том 1

Лекс Эл
1. Тайны затерянных звезд
Фантастика:
боевая фантастика
космическая фантастика
фэнтези
5.00
рейтинг книги
Тайны затерянных звезд. Том 1

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Плохой парень, Купидон и я

Уильямс Хасти
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Плохой парень, Купидон и я