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

C# 11 - Literais raw string interpolados

Aprenda a usar literais raw string interpolados no C# 11, incluindo escape de chaves, vários caracteres $ e operadores condicionais.

O C# 11 introduz no idioma o conceito de literais raw string e, com isso, chega também um conjunto de novos recursos para interpolação de strings.

Antes de mais nada, você pode continuar usando a sintaxe de interpolação que já conhece em conjunto com literais raw string, assim:

var x = 5, y = 4;
var interpolatedRaw = $"""The sum of "{x}" and "{y}" is "{ x + y }".""";

A saída será:

The sum of "5" and "4" is "9".

Escape de chaves { e }

Você pode escapar chaves duplicando-as. Se pegarmos o exemplo acima e duplicarmos as chaves:

var interpolatedRaw= $"""The sum of "{{x}}" and "{{y}}" is "{{ x + y }}".""";

A saída será:

The sum of "{x}" and "{y}" is "{ x + y }".

Como você pode ver, as chaves não desempenham mais o papel de interpolação, e cada par de chaves duplas resulta em uma única chave na saída.

Vários caracteres $ em literais raw string interpolados

Você pode usar vários caracteres $ em um literal raw string interpolado de forma semelhante à sequência """. A quantidade de caracteres $ que você usa no início da string determina quantos { e } são necessários para a interpolação.

Por exemplo, as duas strings abaixo produzirão exatamente o mesmo resultado do exemplo inicial:

var interpolatedRaw2 = $$"""The sum of "{{x}}" and "{{y}}" is "{{ x + y }}".""";
var interpolatedRaw3 = $$$"""The sum of "{{{x}}}" and "{{{y}}}" is "{{{ x + y }}}".""";

Operador condicional em string interpolada

Os dois pontos (:) têm significado especial em strings interpoladas e, por isso, expressões condicionais precisam de um par adicional de parênteses ( ) para funcionar. Por exemplo:

var conditionalInterpolated = $"I am {x} year{(x == 1 ? "" : "s")} old.";

Erros

Error CS9006 The interpolated raw string literal does not start with enough ’$’ characters to allow this many consecutive opening braces as content.

Esse erro do compilador ocorre quando sua string contém uma sequência de chaves igual ou maior que o dobro do comprimento da sequência de caracteres $ encontrada no início da string.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar