1. Relembrando interpolação de strings
Muitas vezes a gente precisa não só mostrar uma string, mas também inserir nela valores de variáveis. Antes, pra isso, usávamos concatenação (+) ou o método string.Format. Mas desde que apareceu a mágica da interpolação de strings (string interpolation) no C#, a vida ficou bem melhor.
Como funciona a interpolação de strings
Coloca o símbolo $ antes da string e, dentro dela, usa chaves {} pra inserir variáveis ou até expressões inteiras.
Comparando o jeito antigo e o novo de mostrar variáveis
string name = "Anna";
int age = 24;
Console.WriteLine("Meu nome é " + name + ", tenho " + age + " anos."); // Jeito antigo
Console.WriteLine($"Meu nome é {name}, tenho {age} anos."); // Jeito novo!
Dá pra inserir direto cálculos e expressões:
int a = 5, b = 10;
Console.WriteLine($"Soma {a} + {b} = {a + b}");
2. Como funciona a interpolação de strings
Coloca $ antes da string e as variáveis ou expressões vão entre chaves {}:
string name = "Anna";
int age = 24;
Console.WriteLine($"Meu nome é {name}, tenho {age} anos.");
- Tudo que está fora das chaves é só texto.
- Tudo que está dentro das chaves é interpretado como código C#: pode ser nome de variável, conta, chamada de método, etc.
Cálculos e expressões direto na string
Interpolação não fica só nas variáveis simples! Olha o que dá pra fazer:
Expressões aritméticasint apples = 7;
int pears = 5;
Console.WriteLine($"Eu tenho {apples + pears} frutas no total."); // 12
Operações com strings e métodos
string city = "Budapeste";
Console.WriteLine($"Cidade em maiúsculo: {city.ToUpper()}"); // BUDAPESTE
Operador ternário, condições
int score = 90;
Console.WriteLine($"Nota: {(score >= 60 ? "aprovado" : "reprovado")}");
Chamadas de métodos
string FormatUser(string name, int age) => $"{name} ({age})";
Console.WriteLine($"Usuário: {FormatUser("Eva", 19)}"); // Usuário: Eva (19)
Trabalhando com arrays e coleções
int[] numbers = { 3, 5, 7 };
Console.WriteLine($"Soma: {numbers.Sum()}");
Console.WriteLine($"Elementos: {string.Join(", ", numbers)}");
Expressões aninhadas e construções complexas
var user = new { Name = "Oleg", Role = "Admin" };
Console.WriteLine($"Nome: {user.Name}, papel: {(user.Role == "Admin" ? "administrador" : "usuário")}");
as expressões dentro das chaves devem ser curtas e fáceis de ler. Se a lógica for complicada, melhor calcular antes e só colocar a variável pronta.
var student = new { Name = "Sasha", Info = new { Age = 21, Uni = "Harvard" } };
Console.WriteLine($"Nome: {student.Name}, universidade: {student.Info.Uni}");
Conversão de tipos na hora
double price = 19.99;
int count = 3;
Console.WriteLine($"Preço total: {price * count} euros");
Data e hora — já formatado
DateTime now = DateTime.Now;
Console.WriteLine($"Hoje: {now.Day}.{now.Month}.{now.Year}");
Exemplo com loop
var days = new[] { "Seg", "Ter", "Qua" };
Console.WriteLine($"Dias da semana: {string.Join(", ", days)}");
3. Formatação dentro da interpolação
Muitas vezes é importante mostrar bonito números, datas, moeda ou porcentagem.
A interpolação permite indicar o formato direto nas chaves — depois de dois pontos.
Sintaxe geral: {expressão:formato}
Formatando números
double num = 1234.5678;
Console.WriteLine($"Arredondado: {num:F2}"); // 1234.57
Console.WriteLine($"Forma exponencial: {num:E1}"); // 1.2E+003
Console.WriteLine($"Com separador de milhar: {num:N}"); // 1 234,57 (depende da cultura)
Exemplos de formatos:
- F2 — duas casas decimais
- N0 — separador de milhar, 0 casas decimais
- E1 — notação exponencial, 1 casa decimal
- P0 — porcentagem, 0 casas decimais
double ratio = 0.1234;
Console.WriteLine($"Porcentagem: {ratio:P1}"); // 12,3 %
Formatando datas
DateTime d = new DateTime(2025, 6, 18, 15, 42, 0);
Console.WriteLine($"Data: {d:dd.MM.yyyy}"); // 18.06.2025
Console.WriteLine($"Hora: {d:HH:mm}"); // 15:42
Console.WriteLine($"ISO: {d:yyyy-MM-ddTHH:mm:ss}"); // 2025-06-18T15:42:00
Resumo dos formatos de data:
- dd — dia (2 dígitos)
- MM — mês
- yyyy — ano
- HH:mm — hora:minuto (24h)
- d — data curta conforme cultura
- D — data longa
Formatando moeda e dinheiro
decimal cost = 2999.5m;
Console.WriteLine($"Preço: {cost:C}"); // 2,999.50 $ (depende da cultura)
Alinhamento e preenchimento
Dá pra definir largura do campo, alinhar à direita ou à esquerda:
int val = 7;
Console.WriteLine($"[{val,5}]"); // [ 7] — à direita
Console.WriteLine($"[{val,-5}]"); // [7 ] — à esquerda
Combinando formatos
DateTime dt = DateTime.Now;
Console.WriteLine($"Hoje é {dt:dddd, dd MMMM yyyy}, hora {dt:HH:mm}");
Interpolação com tipos de dados diferentes
bool ok = true;
Console.WriteLine($"Operação {(ok ? "sucesso" : "erro")}");
Strings multilinha com interpolação
Agora também tem raw string literals e strings interpoladas multilinha:
string user = "Timur";
int score = 100;
Console.WriteLine($"""
Parabéns, {user}!
Seu resultado: {score}
""");
Interpolação aninhada e cálculos
Dá pra chamar métodos, formatar o resultado e inserir na string:
double[] temps = { 23.4, 25.1, 21.9 };
Console.WriteLine($"Temperatura média: {temps.Average():F1}°C");
Exemplo com tabela (alinhamento + formato)
Formatação e alinhamento em tabela usando interpolação
double[] prices = { 123.4, 8.9, 5643.0 };
for (int i = 0; i < prices.Length; i++)
Console.WriteLine($"Produto {i + 1}: {prices[i],10:F2} euros");
Resultado:
Produto 1: 123.40 euros
Produto 2: 8.90 euros
Produto 3: 5643.00 euros
4. Escape e interpolação juntos
Dá pra usar caracteres de escape e interpolação ao mesmo tempo:
string user = "Masha";
Console.WriteLine($"Oi, \"{user}\"!\nPrazer em te conhecer.");
Saída:
Oi, "Masha"!
Prazer em te conhecer.
Se juntar isso com strings literais, é só colocar $ antes, depois @ (pode ser ao contrário também — tanto faz):
string path = "C:\\Temp";
Console.WriteLine($@"Arquivo encontrado no caminho: ""{path}""");
GO TO FULL VERSION