Система типов
Литералы. Представление значений
В программах на языках высокого уровня (C# в том числе) литералами называют последовательности входящих в алфавит языка программирования символов, обеспечивающих явное представление значений, которые используются для обозначения начальных значений в объявлении членов классов, переменных и констант в методах класса.
Различаются литералы арифметические (разных типов), логические, символьные (включая Escape-последовательности), строковые.
Арифметические литералы
Арифметические литералы кодируют значения различных (арифметических) типов. Тип арифметического литерала определяется следующими интуитивно понятными внешними признаками:
- стандартным внешним видом. Значение целочисленного типа обычно кодируется интуитивно понятной последовательностью символов ' 1 ', ..., ' 9 ', ' 0 '. Значение плавающего типа также предполагает стандартный вид (точка-разделитель между целой и дробной частью, либо научная или экспоненциальная нотация – 1.2500E+052). Шестнадцатеричное представление целочисленного значения кодируется шестнадцатеричным литералом, состоящим из символов ' 0 ', ..., ' 9 ', а также ' a ', ..., ' f ', либо ' A ', ..., ' F ' с префиксом ' 0x ';
- собственно значением. 32768 никак не может быть значением типа short;
- дополнительным суффиксом. Суффиксы l, L соответствуют типу long; ul, UL – unsigned long; f, F – float; d, D – decimal. Значения типа double кодируются без префикса.
Логические литералы
К логическим литералам относятся следующие последовательности символов: true и false. Больше логических литералов в C# нет.
Символьные литералы
Это заключенные в одинарные кавычки вводимые с клавиатуры одиночные символы: ' X ', ' p ', ' Q ', ' 7 ', а также целочисленные значения в диапазоне от 0 до 65535, перед которыми располагается конструкция вида (char) – операция явного приведения к типу char: (char)34 – ' '' ', (char)44 – ' ,', (char)7541 – какой символ будет здесь – не ясно.
Символьные Escape-последовательности
Следующие заключенные в одинарные кавычки последовательности символов являются Escape-последовательностями. Эта категория литералов используется для создания дополнительных эффектов (звонок), простого форматирования выводимой информации и кодирования символов при выводе и сравнении (в выражениях сравнения).
\a | Предупреждение (звонок) |
\b | Возврат на одну позицию |
\f | Переход на новую страницу |
\n | Переход на новую строку |
\r | Возврат каретки |
\t | Горизонтальная табуляция |
\v | Вертикальная табуляция |
\0 | Ноль |
\' | Одинарная кавычка |
\" | Двойная кавычка |
\\ | Обратная косая черта |
Строковые литералы
Это последовательность символов и символьных Escape-последовательностей, заключенных в двойные кавычки.
Verbatim string – строковый литерал, интерпретируемый компилятором так, как он записан. Escape-последовательности воспринимаются строго как последовательности символов.
Verbatim string представляется при помощи символа @, который располагается непосредственно перед строковым литералом, заключенным в парные двойные кавычки. Представление двойных кавычек в Verbatim string обеспечивается их дублированием. Пара литералов (второй – Verbatim string )
..."c:\\My Documents\\sample.txt"... ...@"c:\My Documents\sample.txt"...
имеют одно и то же значение:
c:\My Documents\sample.txt
Представление двойных кавычек внутри Verbatim string достигается за счет их дублирования:
...@"""Focus"""
имеет значение
"Focus"
Строковые литералы являются литералами типа string.