Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
□ Все типы имеют метод T oString()
. Для базовых типов данных он возвращает строковое представление их значения.
□ char
содержит большое число свойств, которые предоставляют информацию о своем содержимом ( IsLetter
, IsNumber
и т.д.), а также методы для выполнения преобразований ( ToUpper()
, ToLower()
).
□ string
имеет очень большое число методов и свойств. Строки будут рассмотрены отдельно.
Также доступен ряд статических методов членов и свойств. Они включают следующие:
□ Целые типы имеют MinValue
и MaxValue
, чтобы указать минимальное и максимальное значения, которые могут содержаться в типе данных.
□ Типы данных float
и double
также имеют свойство Epsilon
, которое указывает наименьшее возможное значение больше нуля, которое может в нем содержаться.
□ Отдельные значения — NaN
(не число, которое не определено), PositiveInfinity
(положительная бесконечность) и NegativeInfinity
(отрицательная бесконечность) определены для float
и double
. Результаты вычисления будут возвращать эти значения в подходящих ситуациях, например, деление положительного числа на ноль будет иметь в результате PositiveInfinity
, в то время как деление нуля на нуль создаст NaN
. Эти значения доступны как статические свойства.
□ Многие типы, включая все числовые, имеют статический метод Parse()
, который позволяет преобразование из строки: double D = double.Parse("20.5")
.
Отметим, что статические методы в C# вызываются определением имени типа данных: int.MaxValue
и float.Epsilon
.
Преобразования базовых типов данных
Преобразование типа является процессом, в котором значение, хранящееся в переменной одного типа данных преобразуется в значение другого типа данных. В C++ это можно сделать явно или неявно:
float f1 = 40.0;
long l1 = f1; // неявно
short s1 = (short)l1; // явно, старый стиль C
short s2 = short(f1); // явно, новый стиль C++
Если преобразование типа определяется явно, то это означает, что в коде явно указывается имя типа данных назначения. C++ позволяет написать явные преобразования типа любым из двух стилей — старым стилем С, в котором имя типа данных помещалось в скобки, или новым стилем, в котором имя переменной помещается в скобки. Оба стиля показаны выше и являются вопросом синтаксического предпочтения, выбор стиля не оказывает никакого влияния на код. В C++ допустимы преобразования любых базовых типов данных. Однако, если существует риск потери данных в связи с тем, что тип данных назначения имеет меньший диапазон значений, чем исходный тип данных, то компилятор может послать предупреждение в зависимости от настройки уровня предупреждений. В приведенном выше примере неявное преобразование типа может вызвать потерю данных, поэтому компилятор будет обычно порождать предупреждение. Явное определение преобразования является на самом деле способом сообщить компилятору что данное действие обдуманно, в результате это обычно приводит к подавлению всех предупреждений.
Так как C# создан с целью обеспечить большую безопасность типов, чем C++, он менее гибок в отношении преобразований между типами данных, Он также формализует понятие явного и неявного преобразования типов данных. Некоторые преобразования определены как неявные, что позволяет выполнить их либо с помощью неявного, либо явного синтаксиса. Другие можно делать только с помощью явного преобразования типов, и компилятор будет давать ошибку (а не предупреждение, как в C++), если попробовать выполнить его неявно.
Правила в C#, имеющие отношение к тому, какие базовые числовые типы данных могут быть преобразованы в другие типы данных, вполне логичны. Неявными преобразованиями будут преобразования, которые не создают риск потери данных, например, int
в long
или float
в double
. Явными преобразованиями являются такие, где может быть потеря данных в связи с ошибкой переполнения, ошибкой знака или потерей дробной части числа, например, float
в int
, int
в uint
или short
в ulong
. Кроме того, так как char
рассматривается несколько отдельно от других целых типов данных, можно преобразовывать только явно в или из char
.
Следующие выражения считаются допустимыми в коде C#:
float f1 = 40.0F;
long l1 = (long)f1; // явное, так как возможна ошибка округления
short s1 = (short)l1; // явное, так как возможна ошибка переполнения
int i1 = s1; // неявное — никаких проблем
uint i2 = (uint)i1; // явное, так как возможна ошибка знака
Отметим, что в C# явное преобразование типов данных всегда делается с помощью старого синтаксиса в стиле C. Новый синтаксис C++ использовать нельзя.
uint i2 = uint(i1); // неверный синтаксис - это не будет компилироваться
Проверяемое (checked) преобразование типов данных
C# предлагает возможность выполнять преобразования типов и другие арифметические операции в проверяемом (checked) контексте. Это означает, что среда выполнения .NET будет обнаруживать возникновение переполнения и порождать исключение (конкретно, OverFlowException
). Это свойство не имеет аналога в C++.
checked {
int I1 = -3;
uint I2 = (uint)I1;
}
В связи с контролируемостью контекста вторая строка будет порождать исключение. Если не определить checked
, исключения не возникнет и переменная I2
будет содержать мусор.
Строки
Обработка строк выполняется значительно легче в C#, чем это было раньше в C++. Это связано с понятием строки как базового типа данных, который распознается компилятором C#. В C# нет необходимости рассматривать строки как массивы символов.
Ближайшим эквивалентом для типа данных string
в C# является класс string
в C++ в стандартной библиотеке. Однако строка C# отличается от строки C++ следующими основными свойствами.
□ Строка C# содержит символы Unicode, а не ANSI.
□ Строка C# имеет значительно больше методов и свойств, чем версия в C++.
□ Класс string
стандартной библиотеки C++ является не более чем классом, предоставленным библиотекой, в то время как в C# синтаксис языка специально поддерживает класс string
как часть языка.
Последовательности кодирования
C# использует тот же метод кодирования специальных символов, что и C++,— с помощью обратной наклонной черты. Вот список кодирования:
Последовательность | Имя символа | Кодировка Unicode |
---|---|---|
\' |
Одиночная кавычка | 0x0027 |
\" |
Двойная кавычка | 0x0022 |
\\ |
Обратный слэш | 0х005C |
\0 |
Null | 0x0000 |
\a |
Сигнал | 0x0007 |
\b |
Возврат на одну позицию | 0x0008 |
\f |
Перевод страницы | 0x000C |
\n |
Новая строка | 0x000A |
\r |
Возврат каретки | 0x000D |
\t |
Горизонтальная табуляция | 0x0009 |
\v |
Вертикальная табуляция | 0x000B |
Это по сути означает, что в C# используются те же коды, что и в C++, за исключением того, что C# не распознает \?
.
Интервал:
Закладка: