C# 10 -  Interpolação de strings constantes


Hoje veremos o novo recurso Constant Interpolated Strings do C# 10.

O novo recurso do C# 10 chamado de Constant Interpolated Strings permite realizar a interpolação de strings constantes definidas com a palavra-chave const.

A palavra-chave const pode ser usada para declarar um campo constante ou uma constante local. Campos e constantes locais  não são variáveis e não podem ser modificados. As constantes podem ser números, valores booleanos, cadeias de caracteres ou uma referência nula.

Assim ao usar strings const nas versões anteriores da linguagem C# a concatenação somente podia ser feita com o operador +.

using System;
namespace DemoConst_Interpola
{
    class Program
    {
        public const string Saudacao = "Bem-Vindo ";
        public const string Titulo = "Srta. ";
        public const string Nome = "Amanda";
        public const string Saudacoes = Saudacao + Titulo + Nome;
        static void Main(string[] args)
        {
            Console.WriteLine(Saudacoes);
        }
    }
}  

Ao tentar realizar a interpolação de strings usando o operador {$) na linha de código abaixo :

 public const string Saudacoes = $"\n{Saudacao}, {Titulo}{Nome} !\n";

Iremos obter o seguinte erro:

Com o C# 10  agora podemos usar o operador de interpolação de strings ($) para combinar strings const.

Assim o código abaixo vai funcionar sem erros:

var teste = new Teste();
teste.Demo();
public class Teste
{
    public const string Saudacao = "Bem-Vindo ";
    public const string Titulo = "Srta. ";
    public const string Nome = "Amanda";
    public const string Saudacoes = $"\n{Saudacao}, {Titulo}{Nome} !\n";
    public void Demo()
    {
        Console.WriteLine(Saudacoes);
        Console.ReadKey();
    }
} 

Além disso, de acordo com a documentação oficial da Microsoft, os valores const interpolados não podem ser numéricos, pois:

"As expressões de espaço reservado não podem ser constantes numéricas porque essas constantes são convertidas em strings em tempo de execução."

Portanto, na realidade, esse recurso só funciona com valores de string const.

E estamos conversados...

"Bem-aventurado o homem que sofre a tentação; porque, quando for provado, receberá a coroa da vida, a qual o Senhor tem prometido aos que o amam."
Tiago 1:12

Referências:


José Carlos Macoratti