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), darif (gata = true)pe o variabilăboolse 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"estefalse. Foloseștestring.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.