Fundamentos de C#: Essenciais de Entrada e Saída
Fundamentos de C#: Essenciais de Entrada e Saída
Este guia percorre as técnicas centrais de entrada e saída em C#, mostrando como ler dados do usuário e exibir resultados de forma confiável.
Saída em C#
Para escrever dados no console, C# oferece dois métodos primários:
System.Console.WriteLine() System.Console.Write() Aqui, System é o namespace, Console é uma classe dentro desse namespace, e WriteLine e Write são seus métodos.
Exemplo 1: Imprimindo String com WriteLine()
using System; namespace Sample { class Test { public static void Main(string[] args) { Console.WriteLine("C# is cool"); } } } Executar o programa produz:
C# is cool
Diferença entre WriteLine() e Write()
WriteLine() imprime o texto fornecido e avança para nova linha, enquanto Write() imprime texto sem adicionar quebra de linha.
Exemplo 2: Usando WriteLine() e Write()
using System; namespace Sample { class Test { public static void Main(string[] args) { Console.WriteLine("Prints on "); Console.WriteLine("New line"); Console.Write("Prints on "); Console.Write("Same line"); } } } Saída:
Prints on New line Prints on Same line
Imprimindo Variáveis e Literais
Tanto WriteLine() quanto Write() podem exibir variáveis e literais.
Exemplo 3: Variáveis e Literais
using System; namespace Sample { class Test { public static void Main(string[] args) { int value = 10; // Variável Console.WriteLine(value); // Literal Console.WriteLine(50.05); } } } Resultado:
10 50.05
Concatenando Strings com Operador +
Strings podem ser combinadas usando operador + durante saída.
Exemplo 4: Saída Concatenada
using System; namespace Sample { class Test { public static void Main(string[] args) { int val = 55; Console.WriteLine("Hello " + "World"); Console.WriteLine("Value = " + val); } } } Resultado:
Hello World Value = 55
Strings Formatadas — Abordagem Mais Limpa
Strings formatadas permitem embutir placeholders que são substituídos em tempo de execução, melhorando legibilidade e reduzindo erros.
Por exemplo, em vez de:
Console.WriteLine("Value = " + val); use:
Console.WriteLine("Value = {0}", val); Aqui, {0} é placeholder para val. Múltiplas variáveis são tratadas com placeholders adicionais.
Exemplo 5: Usando Formatação de String
using System; namespace Sample { class Test { public static void Main(string[] args) { int firstNumber = 5, secondNumber = 10, result; result = firstNumber + secondNumber; Console.WriteLine("{0} + {1} = {2}", firstNumber, secondNumber, result); } } } Saída:
5 + 10 = 15
Este método é mais legível e menos propenso a erros que concatenação manual.
Saiba mais sobre formatação de strings em C# string formatting.
Entrada em C#
A maneira mais direta de capturar entrada do usuário é Console.ReadLine(). Para entrada mais granular, Read() e ReadKey() também estão disponíveis.
Exemplo 6: Lendo String do Usuário
using System; namespace Sample { class Test { public static void Main(string[] args) { string testString; Console.Write("Enter a string - "); testString = Console.ReadLine(); Console.WriteLine("You entered '{0}'", testString); } } } Saída:
Enter a string - Hello World You entered 'Hello World'
Entendendo ReadLine(), Read() e ReadKey()
- ReadLine(): Lê linha inteira do fluxo de entrada e retorna como string.
- Read(): Lê próximo caractere e retorna seu valor ASCII.
- ReadKey(): Captura tecla pressionada sem esperar Enter; útil para prompts de pausa.
Para insight mais profundo, veja discussão no StackOverflow intitulada "Difference between Console.Read() and Console.ReadLine?".
Exemplo 7: Demonstrando Read() e ReadKey()
using System; namespace Sample { class Test { public static void Main(string[] args) { int userInput; Console.WriteLine("Press any key to continue..."); Console.ReadKey(); Console.WriteLine(); Console.Write("Input using Read() - "); userInput = Console.Read(); Console.WriteLine("Ascii Value = {0}", userInput); } } } Saída:
Press any key to continue... x Input using Read() - Learning C# Ascii Value = 76
Note que ReadKey() exibe a tecla imediatamente, enquanto Read() captura uma linha mas retorna apenas código ASCII do primeiro caractere (aqui, 76 para 'L').
Lendo Valores Numéricos
Enquanto strings são lidas diretamente, tipos numéricos requerem conversão. A classe Convert fornece métodos diretos.
Exemplo 8: Convertendo Entrada do Usuário para Números
using System; namespace UserInput { class MyClass { public static void Main(string[] args) { string userInput; int intVal; double doubleVal; Console.Write("Enter integer value: "); userInput = Console.ReadLine(); intVal = Convert.ToInt32(userInput); Console.WriteLine("You entered {0}", intVal); Console.Write("Enter double value: "); userInput = Console.ReadLine(); doubleVal = Convert.ToDouble(userInput); Console.WriteLine("You entered {0}", doubleVal); } } } Resultado:
Enter integer value: 101 You entered 101 Enter double value: 59.412 You entered 59.412
Métodos ToInt32() e ToDouble() do Convert transformam string de entrada no tipo numérico desejado. Lista completa de métodos de conversão está disponível na documentação .NET.
Explore estratégias alternativas de entrada numérica em Lendo inteiro de entrada do usuário.
Linguagem C
- Expandindo horizontes da nuvem: novas zonas, contêineres e estratégias multicloud
- Por Que o Cloud Linux Aumenta Segurança, Estabilidade e Desempenho em Hospedagem Compartilhada
- Dominando Entrada e Saída em C++: Guia Prático
- Dominando Entrada e Saída (I/O) em C: scanf() e printf() Explicados
- Dominando I/O e Importação de Módulos em Python: Guia Prático
- Dominando Entrada e Saída em Java: Imprimir, Ler e Formatados Seus Dados
- Mailboxes no Nucleus SE: Guia Prático de Configuração e Uso
- Semáforos no Nucleus SE: Visão Geral, Configuração e APIs Essenciais
- Queues no Nucleus SE: Introdução e Chamadas de Serviço Centrais
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo