Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
foreach (double SomeElement in MyArray) {
Console.WriteLine(SomeElement);
}
Отметим что в этом цикле SomeElement
является именем, присвоенным переменной для итерации по циклу; здесь можно выбрать любое имя не конфликтующее с другими именами переменных.
Запишем также приведенный выше цикл следующим образом:
foreach (double SomeElement in MyArray)
Console.WriteLine(SomeElement);
так как блочные инструкции в C# работают таким же образом, как составные инструкции в C++.
Этот цикл будет иметь точно такой же результат, как и следующий:
for (int I=0; I < MyArray.Length; I++) {
Console.WriteLine(MyArray[i]);
}
(Отметим, что вторая версия иллюстрирует также, как получить число элементов в массиве в C#. Мы рассмотрим, как массив объявляется в C#, позже.)
Отметим, однако, что в отличие от доступа к элементам массива, цикл foreach
предоставляет к своим элементам доступ только для чтения. Следовательно, следующий код не будет компилироваться.
foreach (double SomeElement in MyArray)
SomeElement *= 2; // Неверно, для SomeElement нельзя выполнить
// присваивание
Мы упомянули, что цикл foreach
может использоваться для массивов или коллекций. Коллекция не имеет аналога в C++, хотя концепция стала общераспространённой в Windows благодаря ее использованию в VB и COM. Коллекция по сути является классом, который реализует интерфейс IEnumerable
. Так как это включает поддержку из базовых классов, понятие коллекция объясняется в главе 7.
Переменные
Определения переменных следуют в основном тем же образцам в C#, что и в C++:
int NCustomers, Result;
double DistanceTravelled;
double Height = 3.75;
const decimal Balance = 344.56M;
Хотя, как можно было ожидать, некоторые из типов различны. Как было замечено ранее, переменные могут быть объявлены только локально в методе или как члены класса. C# не имеет эквивалент, глобальных или статических (то есть с областью действия, ограниченной файлом) переменных в C++. Как уже говорилось, переменные, являющиеся членами класса, называются в C# полями.
Отметим, что C# также строго различаем типы данных, хранимые в стеке (типы данных значений) и хранимые в куче (ссылочные типы данных). Мы позже рассмотрим этот вопрос более подробно.
Базовые типы данных
Как и в C++, C# имеет ряд предопределенные типов данных, и можно определять собственные типы данных, такие как классы или структуры.
В C# и C++ предопределенные типы данных несколько различаются. Типы данных для C# приведены в таблице:
Имя | Содержит | Символ |
---|---|---|
sbyte |
8-битовое целое число со знаком | |
byte |
8-битовое целое число без знака | |
short |
16-битовое целое число со знаком | |
ushort |
16-битовое целое число без знака | |
int |
32-битовое целое число со знаком | |
uint |
32-битовое целое число без знака | U |
long |
64-битовое целое число со знаком | L |
ulong |
64-битовое целое число без знака | UL |
float |
32-битовое значение с плавающей точкой со знаком | F |
double |
64-битовое значение с плавающей точкой со знаком | D |
bool |
true или false |
|
char |
16-битовый символ Unicode | '' |
decimal |
Число с плавающей точкой с 28 значащими цифрами | M |
string |
Множество символов Unicode переменной длины | "" |
object |
Используется там, где не определен тип данных. Ближайшим эквивалентом в C++ является void* , за исключением того, что object не является указателем. |
В приведенной выше таблице символ в третьем столбце указывает букву, которая может быть помещена после числа, чтобы указать его тип явно, например, 28UL
означает число 28, хранимое как long
без знака. Как и в случае C++, одиночные кавычки используются для обозначения символов, двойные кавычки для строк. Однако в C# символы всегда являются символами Unicode, а строки являются определенным ссылочным типом, а не просто массивом символов.
Типы данных в C# используются более аккуратно, чем в C++. Например, в C++ обычно ожидается, что int
будет занимать 2 байта (16 битов), но определение ANSI C++ разрешает, чтобы это зависело от платформы. Следовательно, в Windows int
в C++ занимает 4 байта, столько же сколько и long
. Это очевидно вызывает достаточно много проблем совместимости при переносе программ C++ между платформами. С другой стороны, в C# каждый предопределенный тип данных (за исключением string
и object
) имеет явное определение занимаемой памяти.
Так как размер каждого из примитивных типов (примитивным типом является любой из приведенных выше, за исключением string
и object
) фиксирован в C#, то существует меньшая потребность в операторе sizeof
, хотя он и есть в C#, но допустим только в ненадежном коде (как будет описано позже).
Несмотря на то, что многие имена в C# аналогичны именам C++ и существует достаточно интуитивно понятное отображение между многими из соответствующих типов, некоторые вещи отличаются синтаксически. В частности, signed
и unsigned
не являются ключевыми словами в C# (в C++ можно использовать эти ключевые слова, также как long
и short
для модификации других типов данных (например, unsigned long
, short int
). Такие модификации недопустимы в C#, поэтому приведенная выше таблица является фактически полным списком предопределенных типов данных.
Базовые типы данных как объекты
В отличие от C++ (но как в Java) базовые типы данных в C# трактуются как объекты, чтобы вызывать на них некоторые методы. Например, в C# возможно преобразование целого числа в строку следующим образом.
int I = 10;
string Y = I.ToString();
Можно даже написать:
string Y = 10.ToString();
Тот факт, что базовые типы данных рассматриваются как объекты, показывает тесную связь между C# и библиотекой базовых классов .NET. C# компилирует базовые типы данных, отображая каждый из них в один из базовых классов, например, string
отображается в System.String
, int
в System.Int32
и т.д. Поэтому на самом деле в C# все является объектом. Однако отметим, что это применимо только для синтаксических целей. В реальности при выполнении кода эти типы реализуются как описанные ниже типы промежуточного языка, поэтому нет потери производительности, связанной с интерпретацией базовых типов как объектов. Здесь не будут перечисляться все методы, доступные для базовых типов данных, так как подробности представлены в MSDN. Однако необходимо отметить следующие особенности:
Интервал:
Закладка: