Ce face Console.WriteLine / ReadLine
Clasa statică System.Console oferă acces la fluxurile standard de intrare (Console.In), ieșire (Console.Out) și eroare (Console.Error) pentru aplicațiile de linie de comandă. În proiectele moderne .NET 6+ cu implicit usings activate, spațiul de nume System este importat automat, astfel încât poți apela direct Console.WriteLine(...) fără declarații suplimentare la începutul fișierului.
Metoda Console.WriteLine() scrie reprezentarea textuală a oricărei valori (apelând intern ToString()), urmată de terminatorul de linie specific sistemului de operare (\r\n pe Windows, \n pe Linux/macOS), în timp ce Console.Write() afișează textul fără a trece pe rândul următor. Pentru citirea datelor de la tastatură, Console.ReadLine() blochează execuția până la apăsarea tastei Enter și returnează un șir string? (care poate fi null dacă fluxul de intrare s-a închis cu Ctrl+D / Ctrl+Z).
Parametri, metode și opțiuni
| Parametru / Metodă | Descriere |
|---|---|
Console.WriteLine(object? value) |
Afișează valoarea convertită în text, urmată de un caracter de linie nouă (Environment.NewLine). |
Console.Write(object? value) |
Afișează textul în consolă fără a adăuga linie nouă la final (util pentru prompt-uri interactive). |
Console.ReadLine() |
Citește o linie completă din intrarea standard și returnează string? (fără caracterele de final de linie). |
Console.ReadKey(bool intercept) |
Citește o singură tastă apăsată; dacă intercept este true, tasta nu este afișată pe ecran. |
Console.Error.WriteLine(string) |
Scrie mesajul în fluxul standard de eroare (stderr), separat de ieșirea normală (stdout). |
Console.ForegroundColor / ResetColor() |
Modifică, respectiv resetează culoarea textului afișat în terminal. |
Exemple
Exemplul 1: Afișare în consolă cu Write și WriteLine
Folosim Console.Write pentru a construi o linie din mai multe bucăți și Console.WriteLine pentru a încheia rândul și a afișa valori formatate.
Console.Write("Inițializare serviciu... ");
Console.WriteLine("OK!");
int port = 8080;
string mediu = "Production";
Console.WriteLine($"Serverul rulează pe portul {port} în modul {mediu}.");
Console.Error.WriteLine("[WARN] Cache-ul Redis nu este configurat; se folosește memoria locală.");
Ieșire în consolă
Inițializare serviciu... OK!
Serverul rulează pe portul 8080 în modul Production.
[WARN] Cache-ul Redis nu este configurat; se folosește memoria locală.
Exemplul 2: Citirea și validarea unui număr cu Console.ReadLine și int.TryParse
Deoarece Console.ReadLine() returnează întotdeauna un string?, conversia către un tip numeric trebuie făcută sigur cu int.TryParse pentru a evita excepția FormatException.
Console.Write("Introdu numele tău: ");
string nume = Console.ReadLine()?.Trim() ?? "Anonim";
Console.Write("Introdu vârsta: ");
string? inputVarsta = Console.ReadLine();
if (int.TryParse(inputVarsta, out int varsta) && varsta >= 0)
{
Console.WriteLine($"Salut, {nume}! Peste 5 ani vei avea {varsta + 5} ani.");
}
else
{
Console.WriteLine("Valoarea introdusă pentru vârstă nu este un număr întreg valid.");
}
Ieșire în consolă
Introdu numele tău: Andrei
Introdu vârsta: 27
Salut, Andrei! Peste 5 ani vei avea 32 ani.
Greșeli frecvente
- Folosirea
int.Parse(Console.ReadLine()!)direct pe intrarea utilizatorului fără validare — dacă utilizatorul introduce litere sau apasă Enter pe gol, programul se oprește cuFormatException. Folosește întotdeaunaint.TryParse(...). - Confuzia între
Console.Read()șiConsole.ReadLine(): metodaConsole.Read()citește un singur caracter și îi returnează codul numericint(de exemplu65pentru'A'), nu textul introdus. - Ignorarea faptului că
Console.ReadLine()poate returnanullatunci când programul primește date redirecționate dintr-un fișier sau pipe și ajunge la sfârșitul fluxului (EOF).
Funcții și concepte înrudite
Interpolarea șirurilor ($"..."): Construiește șiruri de caractere lizibile prin încorporarea directă a expresiilor C# și a specificatorilor de formatare între acolade.var și tipurile de date (int, decimal, bool): Declară variabile puternic tipizate prin inferență la compilare (var) sau folosind tipurile fundamentale de valoare din .NET.Tipuri Nullable (?, ??, ?.): Reprezintă explicit absența unei valori și previne excepțiile NullReferenceException prin operatori siguri de navigare și coalescență.