if / else if / else în C# (.NET)

Execută un bloc de cod doar când o condiție de tip bool este adevărată, cu ramuri alternative else if și else.

Sintaxă C#
if (conditie) { ... } else if (alta) { ... } else { ... }

Ce face if / else if / else

Instrucțiunea if evaluează o expresie de tip bool și execută blocul dintre acolade doar dacă rezultatul este true. Ramurile else if se verifică în ordine, iar else se execută când nicio condiție de dinainte nu a fost adevărată.

Spre deosebire de C sau JavaScript, C# nu transformă automat numerele sau șirurile în bool: if (numar) nu se compilează, trebuie scris if (numar != 0). Condițiile se combină cu && (și), || (sau) și ! (negație), care se opresc la primul operand care decide rezultatul.

Pentru multe ramuri care compară aceeași valoare, o expresie switch este de obicei mai ușor de citit.

Parametri

Parametru Descriere
conditie Orice expresie de tip bool: comparații (==, <, >=), apeluri de metode care returnează bool, pattern-uri cu is.
else if Opțional, de câte ori e nevoie. Se verifică doar dacă ramurile de dinainte au fost false.
else Opțional. Se execută când toate condițiile au fost false.

Exemple

Exemplul 1: Calificativ după notă

Ramurile se verifică de sus în jos, așa că ordinea pragurilor contează: prima condiție adevărată câștigă.

int[] note = [10, 8, 6, 4];

foreach (int nota in note)
{
    string calificativ;
    if (nota >= 9)
        calificativ = "Foarte bine";
    else if (nota >= 7)
        calificativ = "Bine";
    else if (nota >= 5)
        calificativ = "Suficient";
    else
        calificativ = "Insuficient";

    Console.WriteLine($"Nota {nota}: {calificativ}");
}

Rezultat

Nota 10: Foarte bine
Nota 8: Bine
Nota 6: Suficient
Nota 4: Insuficient

Exemplul 2: Condiții combinate și verificare de null

&& nu mai evaluează partea a doua dacă prima e falsă, așa că oras.Length nu se apelează pe null.

string? oras = "Iași";
int varsta = 17;

if (oras is not null && oras.Length > 0)
    Console.WriteLine($"Oraș: {oras}");

if (varsta >= 18 || oras == "Iași")
    Console.WriteLine("Primește invitația");
else
    Console.WriteLine("Nu primește invitația");

if (!(varsta >= 18))
    Console.WriteLine("Minor");

Rezultat

Oraș: Iași
Primește invitația
Minor

Greșeli frecvente

  • if (x = 5) nu se compilează în C# (atribuirea nu dă bool), dar if (gata = true) pe o variabilă bool se compilează și e mereu adevărat. Folosește == pentru comparație.
  • Fără acolade, doar prima instrucțiune aparține de if. Când adaugi a doua linie, pune acolade, altfel ea se execută mereu.
  • Compararea șirurilor fără să ții cont de majuscule: "iasi" == "Iasi" este false. Folosește string.Equals(a, b, StringComparison.OrdinalIgnoreCase).

Comenzi înrudite

  • Operatorul condițional ?:: Alege între două valori în funcție de o condiție, într-o singură expresie: conditie ? a : b.
  • for, break și continue: Repetă un bloc de cod cu un contor: inițializare, condiție și pas. break oprește bucla, continue sare la pasul următor.