Partilhar via


Texto literal de cadeia de caracteres bruto - """ em literais de cadeia de caracteres

Um literal de cadeia de caracteres bruta começa e termina com um mínimo de três aspas duplas (") caracteres:

var singleLine = """This is a "raw string literal". It can contain characters like \, ' and ".""";

Os literais de cadeia de caracteres brutos podem abranger várias linhas:

var xml = """
        <element attr="content">
            <body>
            </body>
        </element>
        """;

As regras a seguir regem a interpretação de um literal de cadeia de caracteres bruta de várias linhas:

  • As aspas de abertura devem ser os últimos caracteres sem espaço em branco em sua linha, e as aspas de fechamento devem ser os primeiros caracteres sem espaço em branco em sua linha.
  • Qualquer espaço em branco à esquerda das aspas de fechamento é removido de todas as linhas da cadeia de caracteres bruta literal.
  • Qualquer espaço em branco após as aspas de abertura na mesma linha é ignorado.
  • Apenas as linhas de espaço em branco após a citação de abertura são incluídas no literal da cadeia de caracteres.
  • Se um espaço em branco preceder o delimitador final na mesma linha, o número exato e o tipo de caracteres de espaço em branco (por exemplo, espaços versus tabulações) devem existir no início de cada linha de conteúdo. Especificamente, um espaço não corresponde a uma guia horizontal e vice-versa.
  • A nova linha antes das aspas de fechamento não é incluída na cadeia de caracteres literal.

Sugestão

O Visual Studio e o C# Dev Kit fornecem alguma validação e realce de sintaxe quando literais de cadeia de caracteres bruta contêm dados JSON ou expressões regulares.

As ferramentas analisam o texto. Se as ferramentas tiverem confiança de que o texto representa JSON ou uma expressão regular, o editor fornecerá coloração de sintaxe.

Você pode melhorar essa experiência adicionando um comentário acima da declaração indicando o formato:

  • // lang=json indica que o literal da cadeia de caracteres bruta representa dados JSON.
  • // lang=regex Indica que o literal de cadeia de caracteres bruto representa uma expressão regular.

Quando um literal de cadeia de caracteres bruto é usado como um argumento em que o parâmetro usa o System.Diagnostics.CodeAnalysis.StringSyntaxAttribute para indicar um formato, essas ferramentas validam o literal de cadeia de caracteres bruto para alguns dos tipos de formato. JSON e regex são suportados.

Para alguns formatos, o comentário ou o atributo habilita sugestões de código oferecem correções para literais de cadeia de caracteres com base no formato.

Talvez seja necessário criar um literal de cadeia de caracteres bruto que tenha três ou mais caracteres consecutivos de aspas duplas. Os literais de cadeia de caracteres brutos podem começar e terminar com uma sequência de pelo menos três caracteres de aspas duplas. Quando o literal de cadeia de caracteres contém três aspas duplas consecutivas, você inicia e termina o literal de cadeia de caracteres bruto com quatro caracteres de aspas duplas:

var moreQuotes = """" As you can see,"""Raw string literals""" can start and end with more than three double-quotes when needed."""";

Se você precisar iniciar ou terminar uma cadeia de caracteres bruta literal com caracteres de aspas, use o formato de várias linhas:

var MultiLineQuotes = """"
               """Raw string literals""" can start and end with more than three double-quotes when needed.
               """";

Literais de cadeia de caracteres brutos também podem ser combinados com cadeias de caracteres interpoladas para incorporar os { caracteres e } na cadeia de caracteres de saída. Você usa vários $ caracteres em uma cadeia de caracteres bruta interpolada literal para incorporar { e } caracteres na cadeia de caracteres de saída sem escapar deles.

O conteúdo do literal de cadeia de caracteres bruto não deve conter um conjunto de caracteres contíguos " cujo comprimento seja igual ou maior que o comprimento do delimitador literal de cadeia de caracteres bruto. Por exemplo, as cordas """" """ """" e """"""" """""" """"" """" """ """"""" são bem formadas. No entanto, as cordas e """ """ """ são mal formadas """ """" """

Consulte também