Типы литералов

Как уже говорилось, величин, не имеющих типа, не существует. Поэтому литера­лы (константы) тоже имеют тип. Если значение целого литерала находится внутри диапазона допустимых значений типа int, литерал рассматривается как int, иначе он относится к наименьшему из типов uint, long или ulong, в диапазон значений которого он входит. Вещественные литералы по умолчанию относятся к типу double.

Например, константа 10 относится к типу int (хотя для ее хранения достаточно и байта), а константа 2147483648 будет определена как uint. Для явного задания типа литерала служит суффикс, например, 1.1f, 1UL, 1000m (все суффиксы пере­числены в табл. 2.3). Явное задание применяется в основном для уменьшения количества неявных преобразований типа, выполняемых компилятором.

Типы-значения и ссылочные типы

Чаще всего типы С# разделяют по способу хранения элементов на типы-значения и ссылочные типы (рис. 2.2)1. Элементы типов-значений, или значимых типов (value types), представляют собой просто последовательность битов в памяти, необходимый объем которой выделяет компилятор. Иными словами, величины значимых типов хранят свои значения непосредственно. Величина ссылочного типа хранит не сами данные, а ссылку на них (адрес, по которому расположены данные). Сами данные хранятся в хипе.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: