Start Debugging
2023-03-15 Atualizado 2023-11-05 csharp Edit on GitHub

Literais raw string no C# 11 (sintaxe de aspas triplas)

Use os literais raw string do C# 11 (sintaxe de aspas triplas `"""`) para incorporar espaços em branco, quebras de linha e aspas sem sequências de escape. Regras e exemplos.

Os literais raw string são um novo formato que permite incluir espaços em branco, quebras de linha, aspas embutidas e outros caracteres especiais na sua string, sem precisar de sequências de escape.

Como funciona:

Um exemplo rápido:

string rawString = """
    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.
    """;

A saída será a seguinte:

Lorem ipsum "dolor" sit amet,
    consectetur adipiscing elit.

Espaços em branco antes da sequência de fechamento

Os espaços em branco antes das aspas duplas de fechamento controlam quais espaços são removidos da sua expressão raw string. No exemplo acima, havia 4 espaços em branco antes da sequência """, portanto quatro espaços foram removidos de cada linha da expressão. Se houvesse apenas 2 espaços em branco antes da sequência final, somente 2 espaços teriam sido removidos de cada linha do raw string.

Exemplo: sem espaços em branco antes da sequência final

No exemplo anterior, se não especificássemos nenhum espaço antes da sequência de fechamento, a string resultante manteria a indentação exatamente como estava.

Expressão:

string rawString = """
    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.
""";

Saída:

    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.

Usar mais de 3 aspas duplas na sequência de abertura / fechamento

Isso é útil quando você tem uma sequência de 3 aspas duplas dentro do próprio raw string. No exemplo abaixo usamos uma sequência de 5 aspas duplas para começar e terminar o literal raw string, então conseguimos incluir no conteúdo sequências de 3 e 4 aspas duplas.

string rawString = """""
    3 double-quotes: """
    4 double-quotes: """"
    """"";

Saída:

3 double-quotes: """
4 double-quotes: """"

Erros associados

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.

< Voltar