Основы языка C# 2005. Евсеева О.Н - 31 стр.

UptoLike

Составители: 

35
2. СИСТЕМА ТИПОВ C#
Все типы C# можно разделить на четыре категории:
1. Типы-значения (value), или значимые типы.
2. Ссылочные (reference).
3. Указатели (pointer).
4. Тип void.
Эта классификация основана на том, где и как хранятся значения типов.
Для ссылочного типа значение задает ссылку на область памяти в «куче», где
расположен соответствующий объект. Для значимого типа используется
прямая адресация, значение хранит собственно данные, и память для них
отводится, как правило, в стеке.
В отдельную категорию выделены указатели, что подчеркивает их
особую роль в языке. Указатели имеют ограниченную область действия и могут
использоваться только в небезопасных блоках, помеченных как unsafe.
Особый статус имеет и тип void, указывающий на отсутствие какого-либо
значения.
2.1. Встроенные типы языка C#
В языке C# жестко определено, какие типы относятся к ссылочным, а
какиек значимым. К значимым типам относятся: логический,
арифметический, структуры, перечисление. Массивы, строки и классы
относятся к ссылочным типам. В C# массивы рассматриваются как
динамические, их размер может определяться на этапе вычислений, а не в
момент трансляции. Строки в C# также рассматриваются как динамические
переменные, длина которых может изменяться. Поэтому строки и массивы
относятся к ссылочным типам, требующим распределения памяти в «куче».
Со структурами дело сложнее. Структуры C# представляют частный
случай класса. Определив свой класс как структуру, программист получает
возможность отнести класс к значимым типам, что иногда бывает крайне
полезно. У программиста C# только благодаря структурам появляется
возможность управлять отнесением класса к значимым или ссылочным типам.
Правда, это неполноценное средство, поскольку на структуры накладываются
дополнительные ограничения по сравнению с обычными классами.
Все встроенные типы C# однозначно отображаются, а фактически
совпадают с системными типами каркаса Net Framework, размещенными в
пространстве имен System. Поэтому всюду, где можно использовать имя типа,
например, – int, с тем же успехом можно использовать и имя System.Int32.
В следующей таблице приведено описание всех встроенных типов языка
C# и их основные характеристики.