4.1.
Типы значений
Типы значений хранятся в стеке. Стек – это
область памяти,
которая используется для передачи параметров в методы и хранения
локальных
переменных, определенных в пределах методов. Данные
переменной типа значения хранятся в самой переменной.
К типам значений относятся стандартные типы данных:
-
Целочисленные типы (
byte
,
sbyte
,
char
,
short
,
ushort
,
int
,
uint
,
long
,
ulong
);
-
Типы с плавающей запятой (
float
,
double
);
-
Тип
decimal
;
-
Тип
bool
;
-
Пользовательские структуры (
struct
);
-
Перечисления (
enum
).
4.2.
Ссылочные типы
Ссылочные
типы хранятся в области памяти, называемой
кучей,
которую можно представить как неупорядоченный набор разнородных
объектов.
При создании объекта ссылочного типа в стеке помещается ссылка
на адрес объекта в куче. Когда объект
ссылочного типа перестает
использоваться, то ссылка из стека удаляется, и память очищается.
После этого в дело вступает автоматический сборщик мусора: он
видит, что на объект в куче нет больше ссылок, удаляет этот объект и
очищает память.
К
ссылочным типам относят классы,
массивы, тип
string
, тип
object
. Остальные ссылочные типы в рамках нашего пособия не
рассматриваются.
Тип
object
является базовым для всех типов, как ссылочных, так и
значимых. Все типы прямо или косвенно наследуются от типа
object
.
Кроме того, любой тип может быть приведён к
типу
object
при
необходимости.
Оператор
new
используется для создания ссылочных типов в куче.
Результатом работы оператора
new
является
ссылка на выделенный
участок памяти, если оператор сработал успешно, в противном случае
оператор возвращает значение пустой ссылки (
null
).
21