C#: Entrada e saída

1. Console.Write e Console.WriteLine

Console.Write gera texto sem uma quebra de linha no final, enquanto Console.WriteLine acrescenta uma quebra de linha automaticamente.

▶ Exemplo

CSHARP
Console.Write("Hello");
Console.Write(" ");
Console.WriteLine("World");
Console.WriteLine("Second line");
▶ Experimente
TEXT 📖 Somente leitura
Hello World
Second line

2. Formatação de marcadores de posição

Use {0}, {1} e assim por diante como marcadores de posição para inserir valores de variáveis em uma string, listando os argumentos correspondentes em ordem após a string de formato.

▶ Exemplo

CSHARP
string name = "Alice";
int age = 25;
Console.WriteLine("Name: {0}, Age: {1}", name, age);
Console.WriteLine("{0} is {1} years old, {0} is a programmer", name, age);
▶ Experimente
TEXT 📖 Somente leitura
Name: Alice, Age: 25
Alice is 25 years old, Alice is a programmer

3. Interpolação de strings

Coloque o prefixo $ na string e escreva variáveis ou expressões diretamente dentro de {}. Isso torna o código mais legível do que a formatação com marcadores de posição.

▶ Exemplo

CSHARP
string name = "Bob";
int age = 30;
Console.WriteLine($"Name: {name}, Age: {age}");
int x = 10, y = 20;
Console.WriteLine($"Result: {x + y}");
▶ Experimente
TEXT 📖 Somente leitura
Name: Bob, Age: 30
Result: 30

4. Controle de alinhamento

Especifique uma largura com uma vírgula nos placeholders ou na interpolação: valores positivos alinham à direita, valores negativos alinham à esquerda. Por exemplo, {0,10} alinha à direita com uma largura de 10, e {0,-10} alinha à esquerda com uma largura de 10.

▶ Exemplo

CSHARP
Console.WriteLine("|{0,10}|", "Right");
Console.WriteLine("|{0,-10}|", "Left");
Console.WriteLine($"|{"InterpR",10}|");
Console.WriteLine($"|{"InterpL",-10}|");
▶ Experimente
TEXT 📖 Somente leitura
|     Right|
|Left      |
|   InterpR|
|InterpL   |

5. Controle de precisão

Use especificadores de formato para controlar a precisão numérica: F2 mantém 2 casas decimais, F4 mantém 4 casas decimais e assim por diante.

▶ Exemplo

CSHARP
double pi = 3.14159265;
Console.WriteLine("{0:F2}", pi);
Console.WriteLine("{0:F4}", pi);
Console.WriteLine($"{pi:F3}");
▶ Experimente
TEXT 📖 Somente leitura
3.14
3.1416
3.142

6. Especificadores de formato comuns

Especificador Nome Descrição
C Moeda Adiciona símbolo da moeda
D Decimal Preenche o número inteiro com zeros
F Ponto fixo Número fixo de casas decimais
P Porcentagem Multiplica por 100 e soma o valor em %
X Hexadecimal Converte para hexadecimal

▶ Exemplo

CSHARP
int num = 255;
double money = 1234.56;
double ratio = 0.856;
Console.WriteLine($"Currency: {money:C}");
Console.WriteLine($"Decimal: {num:D6}");
Console.WriteLine($"Fixed-point: {money:F1}");
Console.WriteLine($"Percent: {ratio:P1}");
Console.WriteLine($"Hexadecimal: {num:X}");
▶ Experimente
TEXT 📖 Somente leitura
Currency: ¤1,234.56
Decimal: 000255
Fixed-point: 1234.6
Percent: 85.6%
Hexadecimal: FF

7. Console.ReadLine para entrada

Console.ReadLine() lê uma linha de texto do console e a retorna como string. Retorna null quando chega ao fim do fluxo de entrada.

▶ Exemplo

CSHARP
Console.WriteLine("Please enter your name:");
string input = Console.ReadLine();
Console.WriteLine($"Hello, {input}!");
▶ Experimente
TEXT 📖 Somente leitura
Please enter your name:
Charlie
Hello, Charlie!

8. Conversão de entradas numéricas

Como Console.ReadLine() retorna uma string, use int.Parse, int.TryParse ou Convert.ToInt32 para convertê-la em um número.

▶ Exemplo

CSHARP
string str1 = "42";
int num1 = int.Parse(str1);
int num2 = Convert.ToInt32(str1);

string str2 = "abc";
if (int.TryParse(str2, out int result))
{
    Console.WriteLine($"Conversion succeeded: {result}");
}
else
{
    Console.WriteLine("Conversion failed, input is not a valid integer");
}

Console.WriteLine($"Parse result: {num1}");
Console.WriteLine($"Convert result: {num2}");
▶ Experimente
TEXT 📖 Somente leitura
Conversion failed, input is not a valid integer
Parse result: 42
Convert result: 42

9. Console.ReadKey para entrada de uma única tecla

Console.ReadKey() lê o pressionamento de uma única tecla sem exigir que se pressione Enter. Ela retorna um objeto ConsoleKeyInfo, e o caractere pode ser acessado por meio de KeyChar.

▶ Exemplo

CSHARP
Console.WriteLine("Press any key to continue...");
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine();
Console.WriteLine($"You pressed: {key.KeyChar}");
▶ Experimente
TEXT 📖 Somente leitura
Press any key to continue...
A
You pressed: A

10. Expressões e formatação na interpolação

É possível escrever expressões dentro da interpolação {} e também combinar especificadores de formato com alinhamento. A sintaxe é {expression,alignment:formatSpecifier}.

▶ Exemplo

CSHARP
double price = 29.9;
int quantity = 3;
Console.WriteLine($"Unit price: {price:C}, Quantity: {quantity}, Total: {price * quantity:C}");
Console.WriteLine($"|{price,10:C}|");
int hex = 255;
Console.WriteLine($"Hexadecimal: {hex:X4}");
▶ Experimente
TEXT 📖 Somente leitura
Unit price: ¤29.90, Quantity: 3, Total: ¤89.70
|    ¤29.90|
Hexadecimal: 00FF

11. Melhores práticas de formatação

▶ Exemplo

CSHARP
string[] names = { "Apple", "Banana", "Orange" };
double[] prices = { 5.5, 3.2, 4.8 };
int[] stocks = { 120, 85, 200 };

Console.WriteLine($"{"Item",8}{"Price",8:C}{"Stock",8}");
Console.WriteLine(new string('-', 24));
for (int i = 0; i < names.Length; i++)
{
    Console.WriteLine($"{names[i],8}{prices[i],8:F2}{stocks[i],8}");
}

Console.WriteLine("\nEnter quantity to purchase:");
if (int.TryParse(Console.ReadLine(), out int qty) && qty > 0)
{
    double total = prices[0] * qty;
    Console.WriteLine($"Total: {total:C}");
}
else
{
    Console.WriteLine("Invalid input, please enter a positive integer");
}
▶ Experimente
TEXT 📖 Somente leitura
    Item    Price   Stock
------------------------
   Apple     5.50     120
  Banana     3.20      85
  Orange     4.80     200

Enter quantity to purchase:
5
Total: ¤27.50

❓ Perguntas Frequentes

P: Qual é a diferença entre int.Parse e int.TryParse? R: O Parse lança uma exceção em caso de falha, enquanto o TryParse retorna um bool sem lançar exceção. É recomendável usar o TryParse.

P: Como se exibe chaves literais na interpolação de strings? R: Use chaves duplas para escapar: {{ exibe {, e }} exibe }.

P: Quando o Console.ReadLine retorna null? R: Ele retorna null quando o fluxo de entrada chega ao fim, o que raramente ocorre em um console interativo.

P: Por que o símbolo da moeda aparece como ¤? R: ¤ é o símbolo da moeda independente de cultura. Ao definir a localidade do sistema ou especificar informações culturais, o símbolo da moeda apropriado será exibido.

📖 Resumo

📝 Exercícios

  1. Escreva um programa que utilize interpolação de strings para gerar um cartão de informações pessoais com nome, idade e altura, com cada campo alinhado
  2. Escreva uma calculadora simples: leia dois números inteiros e um operador, exiba o resultado e use o TryParse para lidar com a entrada
  3. Escreva um programa que exiba 5 produtos em formato de tabela, com nome, preço unitário (formato F2) e estoque, utilizando uma largura de coluna consistente de 10
  4. Escreva um programa que leia um número inteiro e o exiba nos formatos decimal (D8), hexadecimal (X) e percentual (P)
  5. Escreva um programa que utilize o Console.ReadKey para a seleção de opções do menu: pressione 1 para exibir a hora, pressione 2 para sair
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%