C# для профессионалов. Том II
Шрифт:
Компания Microsoft решила использовать инструкцию
foreach
C# предоставляет дополнительную инструкцию управления потоком выполнения
Отметим что в этом цикле
Запишем также приведенный выше цикл следующим образом:
так как блочные инструкции в C# работают таким же образом, как составные инструкции в C++.
Этот цикл будет иметь точно такой же результат, как и следующий:
(Отметим, что вторая версия иллюстрирует также, как получить число элементов в массиве в C#. Мы рассмотрим, как массив объявляется в C#, позже.)
Отметим, однако, что в отличие от доступа к элементам массива, цикл
Мы упомянули, что цикл
Переменные
Определения переменных следуют в основном тем же образцам в C#, что и в C++:
Хотя, как можно было ожидать, некоторые из типов различны. Как было замечено ранее, переменные могут быть объявлены только локально в методе или как члены класса. 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 не является указателем. |
В приведенной выше таблице символ в третьем столбце указывает букву, которая может быть помещена после числа, чтобы указать его тип явно, например,
Типы данных в C# используются более аккуратно, чем в C++. Например, в C++ обычно ожидается, что
Так как размер каждого из примитивных типов (примитивным типом является любой из приведенных выше, за исключением
Несмотря на то, что многие имена в C# аналогичны именам C++ и существует достаточно интуитивно понятное отображение между многими из соответствующих типов, некоторые вещи отличаются синтаксически. В частности,
Базовые типы данных как объекты
В отличие от C++ (но как в Java) базовые типы данных в C# трактуются как объекты, чтобы вызывать на них некоторые методы. Например, в C# возможно преобразование целого числа в строку следующим образом.
Можно даже написать:
Тот факт, что базовые типы данных рассматриваются как объекты, показывает тесную связь между C# и библиотекой базовых классов .NET. C# компилирует базовые типы данных, отображая каждый из них в один из базовых классов, например,