В программах C# литералы (константы) – это фиксированные значения. Литералы могут иметь любой тип. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов данных по ее внешнему виду. Есть определенные соглашения распознавания типа литерала по его записи (по умолчанию). Рассмотрим правила записи и интерпретации литералов различных типов (табл. 4.6).
Таблица 4.6 – Константы в С#
Константа
| Описание
| Примеры
|
Логическая
| true (истина) или false (ложь)
| True false
|
Целая
| Десятичная: последовательность десятичных цифр, за которой может следовать суффикс (U, u, L, l, UL,Ul, uL, ul, LU, Lu, lU, lu)
Шестнадцатеричная: символы 0x или 0X, за которыми следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F), а за цифрами, в свою очередь, может следовать суффикс (U, u, L, l, UL, Ul, uL, ul, LU, Lu, lU, lu)
| 4 142 13356
2u 0Lu 13356L
0xA 0x1B8 0X00FF
0xAU 0x1B8LU 0X00FFl
|
Вещественная
| С фиксированной точкой:
Суффикс — один из символов F, f, D,d, M, m
С порядком:
[суффикс]
Суффикс — один из символов F, f, D,d, M, m
| -3.1 .005 270
3.1F .005d
0.6E-3 .32e+5
0.2E6D .23e-5
|
Символьная
| Символ, заключенный в апострофы
| 'п' 'у' ','
|
Строковая
| Последовательность символов, заключенная в кавычки
| "Пример"
|
null
| Ссылка, которая не указывает ни на какой объект
| null
|
Логических литералов всего два: true (истина) и false (ложь).
Целыелитералы – это числа без дробной части. Поскольку в C# определено несколько целых типов, то по умолчанию считается, что типом целого литерала является тип с наименьшим диапазоном значений, в который попадает литерал, но с диапазоном не меньше чем int. Таким образом, литералы по умолчанию могут принадлежать одному из следующих типов: int, uint, long, ulong. Целые литералы могут быть представлены либо в десятичной, либо в шестнадцатеричной системе счисления. Когда компилятор распознает константу, он отводит ей место в памяти в соответствии с ее видом и значением.
Вещественныйлитерал по умолчанию должен обязательно содержать дробную часть. В этом случае компилятор воспринимает его как данное типа double. Вещественные литералы могут быть представлены только в десятичной системе, но в двух формах: с фиксированной точкой и с порядком. Вещественная константа с порядком представляется в виде мантиссы и порядка. Пробелы внутри числа не допускаются. Для разделения целой и дробной частей используется точка.
Если пользователя не устраивают изложенные выше правила интерпретации типов литералов по умолчанию, он может явно наделить литерал требуемым типом с помощью соответствующего суффикса, добавив его в конец литерала:
- для типа long суффиксы l или L, например: 12L;
- для типа uint суффиксы u или U, например: 45U;
- для типа ulong суффиксы ul или UL, например: 45632ul;
- для типа float суффиксы f или F, например: 9.2F;
- для типа decimal суффиксы m или M, например: 9.32M.
Символьнаяконстанта представляет собой любой символ в кодировке Unicode. Пустая символьная константа недопустима.
Символьные константы, помимо показанной в таблице 4.6 формы представления обычного символа, имеющего графическое представление (кроме апострофа и символа перевода строки), может записываться и в других формах:
- управляющая последовательность – '\0', '\n';
- символ в виде шестнадцатеричного кода – '\хF', '\х74';
- символ в виде escape-последовательности Unicode – '\uА81В'.
Управляющая последовательность интерпретируется как одиночный символ и используется для представления:
- кодов, не имеющих графического изображения (например, \n – переход в начало следующей строки);
- символов, имеющих специальное значение в строковых и символьных литералах, например, апострофа.
В таблице 4.7 приведены допустимые значения последовательностей. Если непосредственно за обратной косой чертой следует символ, не предусмотренный таблицей, возникает ошибка компиляции.
Таблица 4.7 – Управляющие последовательности в С#
Вид
| Наименование
|
\a
| Звуковой сигнал
|
\b
| Возврат на шаг
|
\f
| Перевод страницы (формата)
|
\n
| Перевод строки
|
\r
| Возврат каретки
|
\t
| Горизонтальная табуляция
|
\v
| Вертикальная табуляция
|
\\
| Обратная косая черта
|
\’
| Апостроф
|
\”
| Кавычка
|
\0
| Нуль-символ (Null)
|
Символ, представленный в виде шестнадцатеричного кода, начинается с префикса \0х, за которым следует код символа. Числовое значение должно находиться в диапазоне от 0 до 216 - 1, иначе возникает ошибка компиляции.
Escape-последовательности Unicode служат для представления символа в кодировке Unicode с помощью его кода в шестнадцатеричном виде с префиксом \u или \U, например, \u00F2, \U00010011. Коды в диапазоне от \U10000 до \U10FFFF представляются в виде двух последовательных символов; коды, превышающие \U10FFFF, не поддерживаются.
Строковые литералы представляют собой последовательность символов, заключенную в кавычки. Строка может быть пустой (записывается парой смежных двойных кавычек ""). Управляющие последовательности обоих видов могут использоваться и в строковых литералах.
Константа null представляет собой значение, задаваемое по умолчанию для величин ссылочных типов.