33 подписчика
Присваивание объединения со значением NULL
У нас скоро (очень скоро) выйдет курс по нововведениям языка C# – PRO C#. Эволюция языка. Хочу вас ввести в курс дела. Я считаю каждый уважающий себя C# разработчик должен знать историю развития своего главного инструмента для написания программ - язык C#.
Расскажу об одной прикольной фиче из C# 11 версии.
Начнем как всегда с проблемы😉
В C# работа со строками может быть связана с трудностями при необходимости использования многострочных строк и строк с экранированными символами, такими как кавычки или обратные слэши. Например, работа с JSON, XML или SQL-запросами внутри кода требует тщательной экранизации символов, что может сделать код менее читаемым и более сложным для поддержки.
Рассмотрим пример, в котором требуется создать JSON-строку с вложенными кавычками и переносами строк:
string jsonString = "{\n\"name\": \"John\",\n\"age\": 30\n}";
Console.WriteLine(jsonString);
// {
// "name": "John",
// "age": 30
// }
Такой код не только выглядит громоздко, но и трудно читается, особенно при увеличении сложности строки.
До появления C# 11 одним из распространённых способов решения этой проблемы могло стать использование строковых литералов с экранированием символов и конкатенацией строк:
string jsonString = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30\n" +
"}";
Хотя этот метод решает проблему создания многострочных строк, он всё ещё имеет ряд недостатков:
– Необходимость экранирования специальных символов (например, \n для переноса строки, \" для кавычек).
– Ухудшение читаемости кода из-за конкатенации строк и экранированных символов.
– Сложности при редактировании таких строк.
Решение
С выходом C# 11 появилась новая возможность — необработанные строковые литералы, которые значительно упрощают работу с многострочными строками и строками, содержащими специальные символы. Необработанные строковые литералы заключаются в тройные кавычки """.
Перепишем пример с использованием необработанных строковых литералов:
string jsonString = """
{
"name": "John",
"age": 30
}
""";
Console.WriteLine(jsonString);
// {
// "name": "John",
// "age": 30
// }
Очевидно, что такой подход имеет ряд преимуществ:
– Не нужно экранировать специальные символы.
– Многострочные строки поддерживаются напрямую.
– Читаемость кода значительно улучшается.
Также стоит отметить, что необработанные строковые литералы поддерживают интерполяцию. Несколько символов $ обозначают, сколько последовательных скобок начинают и завершают интерполяцию. Использование нескольких символов $ в необработанных строковых литералах необходимо для корректной интерполяции строк с фигурными скобками, например, для JSON-строки с интерполяцией.
Для указания того, что интерполяцию начинают и заканчивают 2 фигурные скобки необходимо использовать $$""", например:
string name = "John";
int age = 30;
string jsonString = $$"""
{
"name": "{{name}}",
"age": {{age}}
}
""";
Console.WriteLine(jsonString);
Вот такую приколюшку завезли в C#, чтобы нам с вами легче было писать читаемый и чистый код☺️
Как вам? Знали про такую фичу?
❤️ — если знали о такой фиче
👀 — если узнали о нем впервые
#полезные_материалы #эволюция_языка
2 минуты
17 октября 2024