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

Базовые типы данных

Базовые типы данных

Как и в 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#, поэтому приведенная выше таблица является фактически полным списком предопределенных типов данных.

Оглавление книги


Генерация: 1.569. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз