UTF-8 литерал
Запись "текст"u8 создаёт значение типа
ReadOnlySpan<byte> с UTF-8 байтами
литерала. Для ASCII-текста длина совпадает
с числом символов. Так удобно передавать
данные в API, ожидающие байты, без лишнего
кодирования из string.
Синтаксис
ReadOnlySpan<byte> data = "текст"u8;
Пример
Давайте получим байты строки "abcde"
и выведем длину:
using System;
class Program
{
static void Main()
{
ReadOnlySpan<byte> data = "abcde"u8;
Console.WriteLine(data.Length);
}
}
Результат выполнения кода:
5
Пример
Давайте прочитаем первый байт литерала
"12345":
using System;
class Program
{
static void Main()
{
ReadOnlySpan<byte> data = "12345"u8;
Console.WriteLine(data[0]);
}
}
Результат выполнения кода:
49
Пример
Давайте сравним длину UTF-8 литерала и
число символов в "abcde":
using System;
class Program
{
static void Main()
{
string str = "abcde";
ReadOnlySpan<byte> data = "abcde"u8;
Console.WriteLine(str.Length);
Console.WriteLine(data.Length);
}
}
Результат выполнения кода:
5
5
Пример
Давайте выведем последний байт строки
"abcde":
using System;
class Program
{
static void Main()
{
ReadOnlySpan<byte> data = "abcde"u8;
Console.WriteLine(data[^1]);
}
}
Результат выполнения кода:
101
Смотрите также
-
дословная строка,
которая задаёт текст без escape-последовательностей -
экранирование строк,
которое работает в обычных литералах -
сырая строка,
которая хранит многострочный текст -
оператор
typeof,
который получает тип по имени