Start Debugging
2023-03-15 Обновлено 2023-11-05 csharp Edit on GitHub

Сырые строковые литералы 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.

< Назад