Novidades do C# 11: Raw String Literals

Renato Groffe
3 min readNov 21, 2022

--

Representar aspas duplas em strings no C# é uma tarefa que costuma trazer alguns desafios. Os resultados produzidos por tais strings costumam ser bem distintos quando comparados àquilo que informamos em nossas aplicações.

A manipulação de JSON e de código HTML constituem bons exemplos disso, em que o uso das aspas em conjunto com as barras invertidas (“\”) acaba em muitos casos contribuindo para um código menos legível. Existe ainda uma maior propensão a erros na formatação de tais strings, com omissões ou inclusões de aspas em locais incorretos.

A declaração da variável pessoa1 exemplifica bem todas essas questões, em que a string atribuída à mesma conta com diversas aspas e barras invertidas representando conteúdo JSON:

O C# 11 traz agora um recurso para sanar este tipo de dificuldade, com um novo formato para declaração de valores string: trata-se das Raw String Literals.

Para tirar proveito desta funcionalidade basta iniciarmos e finalizarmos uma string com 3 aspas duplas seguidas, com o C# permitindo então que também usemos aspas duplas no conteúdo sem a necessidade de inclusão de barras invertidas. É o que demonstra a declaração da variável pessoa2 (uma variação do exemplo com pessoa1):

O próprio Visual Studio 2022 favorece a adoção deste recurso com strings JSON, destacando os diferentes elementos de um conteúdo desse tipo (mesmo sem a utilização de Raw String Literals). Na imagem a seguir podemos visualizar esta capacidade com as variáveis pessoa1 e pessoa2:

Strings contendo JSON no Visual Studio 2022

Podemos nos valer também do uso de String Interpolation com Raw String Literals, como no caso da variável pessoa3 no exemplo a seguir. Em situações como essas o caracter $ será empregado 2 vezes, precedendo as 3 aspas iniciais. Para cada variável inserida precisaremos ainda utilizar chaves de abertura (“{“) e fechamento (“}”) também 2 vezes:

Outra capacidade bastante útil oferecida pelas Raw String Literals está na possibilidade de codificarmos uma string por variás linhas, como indicado no próximo exemplo com a variável pessoa4. A única restrição para este tipo de implementação está no fato de que os conjuntos de 3 aspas que iniciam e finalizam a string deverão estar em linhas isoladas, sem nenhum conteúdo sucedendo ou precedendo os mesmos:

Todos esses exemplos de declaração de variáveis estão agrupados na listagem a seguir:

Visualizando o código no Visual Studio 2022 podemos notar que todas as strings são reconhecidas como representações JSON pela IDE:

Para testes desserializando essas strings foi implementada a classe Pessoa:

Já o método ExibirConteudo da classe estática Teste procederá com a desserialização das strings em instâncias de Pessoa, exibindo também os dados associados a tais conteúdos:

Ao executar o código com estes exemplos teremos como resultado:

Clique nesta imagem para visualizar com uma melhor resolução

Este código também está no GitHub:

https://github.com/renatogroffe/CSharp11-RawStringLiterals

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker