Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Синтаксис языка
C# и C++ используют практически идентичный синтаксис. Оба языка, например, игнорируют пробелы между инструкциями и используют точку с запятой для разделения инструкций и фигурные скобки для объединения инструкций в блоки. Все это означает, что на первый взгляд программы, написанные любым языком, выглядят очень похожими. Отметим, однако, следующие различия:
□ C++ требует точку с запятой после определения класса. C# не требует.
□ C++ позволяет использовать выражения как инструкции, даже если они не имеют результата, например:
i + 1;
В C# это будет ошибкой.
Необходимо также отметить, что подобно C++, C# различает строчные и заглавные символы. Однако, так как C# создан для взаимодействия с VB.NET (который не отличает такие символы), строго рекомендуется не использовать имена, которые разнятся только регистром символов для каких-либо объектов, видных коду вне данного проекта (другими словами, имена открытых членов классов в коде библиотеки). Если используются открытые имена, которые отличаются только регистром символов, то это не позволит коду VB.NET получить доступ к этим классам. (В случае написания какого-либо управляемого кода C++ для среды .NET применимы те же рекомендации.)
Опережающие объявления
Опережающие объявления не поддерживаются и не требуются в C#, так как порядок, в котором элементы определены в файлах исходного кода, не имеет значения. Вполне допустимо одному элементу ссылаться на другой элемент, который позже определяется в этом файле или в другом файле, он должен только где-то быть определен. Это противоположно C++, в котором на символы и т.д. можно ссылаться в любом из файлов исходного кода, если они уже были объявлены в том же файле или во включаемом файле.
Отсутствие разделения определения и объявления
С отсутствием опережающих объявлений в C# связано то, что в C# не существует никакого разделения объявления и определения для любых элементов. Например, в C++ принято описывать класс в заголовочном файле сигнатурой функций членов, а полные определения даны в другом месте:
class CMyClass {
public:
void MyMethod(); // определение этой функции находится в файле C++,
// если только MyMethod() не является встраиваемой функцией
// и т.д.
В C# этого не делают. Методы всегда определяются полностью в определении класса
class MyClass {
public void MyMethod() {
// здесь реализация
На первый взгляд может показаться, что это ведет к коду, который труднее читать. Достоинство подхода C++ в этом вопросе в конце концов состоит в том что можно просто просмотреть заголовочный файл, чтобы узнать, какие открытые функции предоставляет класс, не обращаясь к реализации этих функций. Однако это больше не требуется в C#, частично в связи с использованием современных редакторов (редактор Visual Studio.NET позволяет сворачивать реализации методов), а частично в связи с тем, что C# имеет средство автоматического создания документации для кода в формате XML.
Поток выполнения программы
Поток выполнения программы в C# аналогичен потоку C++. В частности, следующие инструкции работают точно таким же образом в C#, как они работают в C++, и имеют точно такой же синтаксис:
□ for
□ return
□ goto
□ break
□ continue
Существует пара синтаксических различий для инструкций if
, while
, do…while
и switch
, и C# предоставляет дополнительную инструкцию управления потоком выполнения foreach
.
if…else
Инструкция if
работает точно таким же образом и имеет такой же синтаксис в C#, как и в C++, кроме одного момента. Условие в каждом предложении if
или else
должно оцениваться как bool
. Например, предположим что х является целым типом данных, а не bool
, тогда следующий код C++ будет создавать ошибку компиляции в C#:
if (х) {
Правильный синтаксис C# выглядит так:
if (x != 0) {
так как оператор !=
возвращает bool
.
Это требование является хорошей иллюстрацией того, как дополнительная безопасность типов в C# заранее перехватывает ошибки. Ошибки времени выполнения в C++, вызываемые написанием if (a=b)
, когда предполагалось написать if (a==b)
являются достаточно распространенными. В C# эти ошибки будет перехватываться во время компиляции.
Отметим, что в C# невозможно преобразовать числовые переменные в или из bool
.
while и do…while
Также, как и для if
, эти инструкции имеют точно такой же синтаксис и назначение в C#, как и в C++, за исключением того, что условное выражение должно оцениваться как bool
.
int X;
while (X) {/* инструкции */} // неправильно
while (X != 0) {/* инструкции */} // правильно
switch
Инструкция switch
служит для тех же целей в C#, что и в C++. Она является, однако, более мощной в C#, так как используется строка в качестве проверяемой переменной, что невозможно в C++:
string MyString; // инициализировать MyString
switch (MyString){
case "Hello":
// что-нибудь сделать
break;
case "Goodbye":
// и т.д.
Синтаксис в C# слегка отличается тем, что каждое предложение case
должно явно заканчиваться. Не разрешается одному case
содержать другой case
, если только первый case
не является пустым. Если желательно получить такой результат, используйте инструкцию goto
.
switch (MyString) {
case "Hello":
// что-нибудь сделать
goto case "Goodbye"; // перейдет к выполнению инструкций
// в предложении "Goodbye"
case "Goodbye":
// сделать что-то еще
break;
case "Black": // здесь можно провалиться, так как он пустой
case "White":
// сделать что-то еще
// выполняется, если MyString содержит
// либо "Black", либо "White"
break;
default:
int j = 3;
break;
}
Компания Microsoft решила использовать инструкцию goto
в этом контексте, чтобы предотвратить появление ошибок в случае, если требовалось выполнить пропущенный break
, и код в инструкции switch
проваливался в следующее предложение case
.
foreach
C# предоставляет дополнительную инструкцию управления потоком выполнения foreach
. foreach
делает цикл по всем элементам массива или коллекции, не требуя явной спецификации индексов. Цикл foreach
на массиве может выглядеть следующим образом. В этом примере предполагается, что MyArray
является массивом double
, и необходимо вывести каждое значение в консольном окне. Чтобы сделать это, используем следующий код:
Интервал:
Закладка: