Сырые строковые литералы C# 11 (синтаксис тройных кавычек)
Используйте сырые строковые литералы C# 11 (синтаксис тройных кавычек `"""`) для встраивания пробелов, переводов строк и кавычек без escape-последовательностей. Правила и примеры.
Сырые строковые литералы - это новый формат, позволяющий включать в строку пробелы, переводы строк, встроенные кавычки и другие специальные символы без необходимости использовать escape-последовательности.
Как это работает:
- сырой строковый литерал начинается с трёх или более символов двойных кавычек ("""). Сколько именно двойных кавычек использовать для обрамления литерала, решаете вы.
- он заканчивается тем же количеством двойных кавычек, что и в начале
- многострочные сырые строковые литералы требуют, чтобы открывающая и закрывающая последовательности находились на отдельных строках. Переводы строк сразу после открывающей кавычки и перед закрывающей не включаются в итоговое содержимое.
- любые пробелы слева от закрывающих двойных кавычек удаляются из строкового литерала (из всех строк; чуть ниже подробнее)
- строки должны начинаться с такого же количества пробелов (или большего), что и закрывающая последовательность
- в многострочных сырых литералах пробелы, идущие после открывающей последовательности на той же строке, игнорируются
Краткий пример:
string rawString = """
Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
""";
Вывод будет следующим:
Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
Пробелы перед закрывающей последовательностью
Пробелы перед закрывающими двойными кавычками определяют, какие пробелы удаляются из вашего сырого строкового выражения. В примере выше перед последовательностью """ было 4 пробела, поэтому из каждой строки выражения было удалено по четыре пробела. Если бы перед закрывающей последовательностью стояло только 2 пробела, из каждой строки сырой строки было бы удалено только 2 пробела.
Пример: без пробелов перед закрывающей последовательностью
В предыдущем примере, если не указать никаких пробелов перед закрывающей последовательностью, итоговая строка сохранит отступы ровно такими, как они были.
Выражение:
string rawString = """
Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
""";
Вывод:
Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
Использование более 3 двойных кавычек в открывающей / закрывающей последовательности
Это полезно, когда внутри самой сырой строки встречается последовательность из 3 двойных кавычек. В примере ниже мы используем последовательность из 5 двойных кавычек, чтобы начать и закончить сырой строковый литерал, и можем включать в содержимое последовательности из 3 и 4 двойных кавычек.
string rawString = """""
3 double-quotes: """
4 double-quotes: """"
""""";
Вывод:
3 double-quotes: """
4 double-quotes: """"
Связанные ошибки
CS8997: Unterminated raw string literal.
string rawString = """Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
""";
CS9000: Raw string literal delimiter must be on its own line.
var rawString = """
Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.""";
CS8999: Line does not start with the same whitespace as the closing line of the raw string literal.
var rawString = """
Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
""";
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.