Литералы в C# - C# и .NET

Литералы в C#

Литералы в C# — это какие-либо фиксированные значения в исходном коде, которые присваиваются переменной и не могут быть изменены во время выполнения программы. С литералами в C# мы уже сталкивались неоднократно при работе над нашими проектами, однако сегодня мы рассмотрим эту тему более подробно.

Примеры литералов в C#

Ниже представлены несколько примеров использования литералов:

int i = 10; 
string hello = "Hello, World!"
double weight = 45.5;

Здесь i, hello, weight– это переменные, а 10, "Hello, World!", 45.5– это литералы, которые присваиваются переменной. Литералы часто используются для инициализации переменных в C#.

Литералы в C#

Ниже представлена схема, демонстрирующая типы литералов в C#

Литералы в C#

Логические литералы

Существует всего два логических литерала — это true (истина) и false (ложь). Значения true и false не преобразуются ни в какое числовое представление. Литерал trueв C# не равен 1, а литерал falseне равен 0, хотя часто для объяснения каких-либо операций применяется именно такая аналогияtrue ассоциируется с 1, а falseс 0.

Пример использования логических литералов:

bool yes = true;
bool no = false;
//такое присвоение недопустимо и приведет к ошибке
bool one = 1;
bool zero = 0;

Вот, что мы увидим в Visual Studio, если наберем код представленный выше:Логические литералы C#

Целочисленные литералы

Целочисленные литералы в C# используются для записи значений типов int, uint, long, ulongи т. д. Целочисленные литералы могут быть представлены в десятичной, двоичной или шестнадцатеричной системе счисления. Пример целочисленных литералов в десятичной системе:

int age = 78;
int width = 15;

Если целочисленный литерал используется для записи числа в двоичной системе, то используется префикс 0b (ноль и b). Например,

int symbolZ = 0b01011010;
Console.WriteLine(symbolZ);

в консоли мы увидим значение 90 (01011010в двоичной системе).

Если целочисленный литерал используется для записи числа в шестнадцатеричной системе, то используется префикс 0x (ноль и x). Например,

int symbolZ = 0x5A;
Console.WriteLine(symbolZ);

в консоли мы увидим значение 90 (5A в шестнадцатеричной системе).

Также, с целочисленными литералами в C# могут использоваться суффиксы U или u для беззнаковых типов, например, для uintи L или l для типов long. Например,

uint data = 145u;
ulong longData = 123876U;
long longData2 = -1234L;

Литералы с плавающей запятой

Литералы в C#, которые имеют целую часть и дробную часть, называются литералами с плавающей запятой. Литералы с плавающей запятой используются для записи значений типов float, double, decimal.

По умолчанию каждый литерал с плавающей запятой имеет тип double, поэтому мы не можем напрямую присваивать значения переменным, например, с типом float 

Например, следующий код приведет к ошибке:

float data = 12.54;

Ошибка будет выглядеть следующим образом:

Литерал с типом double не может быть неявно преобразован к типу “float”; используйте суффикс “F” для создания литерала этого типа

Если мы хотим присвоить значение переменной с типом float, то необходимо добавить суффикс f в конце литерала с плавающей запятой. Аналогично, если мы хотим присвоить значение переменной с типом decimal, то необходимо добавить суффикс m или M в конце литерала с плавающей запятой.

Если никакой суффикс не добавляется, то по умолчанию литерал с плавающей запятой будет иметь тип double. Мы можем явно указать литерал с плавающей запятой как тип double, добавив суффикс d или D, но это необязательно.

Символьные литералы в C#

Символьные литералы в C# заключаются в одинарные кавычки, например, ‘a’, и могут использоваться в переменных типа char. Символьный литерал может быть простым символом, например, ‘a’, escape-последовательностью, например, ‘\t’, или универсальным символом, например, ‘\u02B0’.

Таким образом, для символьных типов данных мы можем задавать символьные литералы тремя способами.

Символьные литералы с escape-последовательностью

Каждая escape-последовательность начинается с символа «\». Некоторые escape-последовательности, допустимые для использования в символьных литералах C# представлены в таблице ниже.

Escape-последовательность Значение
\’ Одинарная кавычка
Двойная кавычка
\\ Обратная косая черта
\0 Null
\a Предупреждение
\b Backspace
\f Перевод страницы
\n Новая строка
\r Возврат каретки
\t Горизонтальная табуляция
\v Вертикальная табуляция
\u Escape-последовательность Юникода (UTF-16)
\U Escape-последовательность Юникода (UTF-32)
\x Escape-последовательность Юникода аналогична «\u», она отличается только длиной переменной

Рассмотрим пример использования escape-последовательностей:

char newLine = '\n';
char carriageReturn = '\r';
Console.WriteLine($"Этот текст будет размещаться на двух строках {carriageReturn}{newLine} потому что в строке используются управляющие символы");

для переменных newLineи carriageReturnмы используем escape-последовательности (или, как их ещё называют – управляющие последовательности), с помощью которых мы переносим часть текста на новую строку. Можете попробовать запустить этот пример в консольном приложении и убедиться, что текст действительно разбивается на две строки.

Символьные литералы, использующие представление в Юникоде

Мы можем задавать символьные литералы с помощью представления Юникода в формате ‘\uXXXX’, где XXXX — это 4 шестнадцатеричных числа (коды символов в Unicode). Например,

char ch = '\u0041';
Console.WriteLine(ch);

В консоли мы увидим символ A.

Строковые литералы в C#

Строковые литералы в C# заключаются в двойные кавычки (“”) или начинаются с @” “. В C# строковые литералы можно представить двумя способами:

Обычные строковые литералы: обычный строковый литерал в C# состоит из нуля или более символов, заключённых в двойные кавычки, например «Учебник по C# для начинающих», и может включать как простые символы, так и управляющие последовательности и символы в кодировке Юникода.

Например:

string title = "Учебник по C# для начинающих\r\n2025, csharp-tutorials.ru";
Console.WriteLine(title);

В консоли вы увидите:Строковые литералы C#

Буквальные строковые литералы: буквальный строковый литерал начинается с символа @, за которым следует двойная кавычка, которая может содержать ноль или более символов, и заканчивается двойной кавычкой. Буквальный литерал выводит строку как есть, даже, если она содержит управляющие последовательности. Такие литералы удобно использовать, когда необходимо передать переменной, например, путь к файлу:

string path = @"c:\temp\file.path";
Console.WriteLine(path);

Дело в том, что каждая одинарная косая черта \ в C# воспринимается как начало управляющей последовательности и, например, вот такой код:

string path = "c:\temp\file.path";
Console.WriteLine(path);

выведет в консоль

потому что сочетание \t будет восприниматься как горизонтальная табуляция, а \f – как перевод страницы (см. таблицу выше). Поэтому мы используем буквальный литерал для того, чтобы строка воспринималась буквально как есть.

null

Ключевое слово null в C# является литералом, представляющим пустую ссылку, которая не ссылается на объект. Этот литерал может применяться к переменным с ссылочным типом данных. 

Подведем итог

Литералы в C# используются для инициализации переменных и могут быть логическими, символьными, целочисленными, строковыми и литералами с плавающей запятой. Для символьных и строковых литералов м можем использовать различные управляющие последовательности, а для численных литералов – префиксы (для представления целого числа в различных системах счисления) и суффиксы (для определения типа вещественного литерала).

Домашнее задание №7.

Напишите в консоли строку с текстом: “Компания “Рога и Копыта” объявляет о скидках!”. Используйте правильное экранирование кавычек.

Решение домашней работы можно изучить на странице домашних заданий.