Novidades do C# 11: Raw String Literals
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:
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:
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!