Soms zijn er meer dan twee mogelijkheden. Je wilt niet alleen checken of iets “waar” of “niet waar” is, maar je hebt meerdere opties. Hiervoor gebruiken we else if.
if-else if-else ladderJe kunt meerdere voorwaarden achter elkaar ketenen. Het programma controleert ze van boven naar beneden. Zodra één voorwaarde true is, wordt dat blok uitgevoerd en worden de overige blokken overgeslagen.
int score = 75;
if (score >= 90)
{
Console.WriteLine("Geweldig! Een A.");
}
else if (score >= 80)
{
Console.WriteLine("Goed gedaan! Een B.");
}
else if (score >= 70)
{
Console.WriteLine("Voldoende. Een C.");
}
else
{
Console.WriteLine("Helaas, onvoldoende.");
}
Belangrijk: De volgorde maakt uit! Als we eerst if (score >= 70) hadden gezet, zou een score van 95 ook in dat blok vallen, en zouden we nooit “Geweldig!” zien.
Variabelen die je binnen een codeblok { ... } aanmaakt, bestaan alleen binnen dat blok. Dit noemen we de scope van de variabele.
if (true)
{
int geheimGetal = 42;
Console.WriteLine(geheimGetal); // Dit werkt
}
// Console.WriteLine(geheimGetal); // FOUT! geheimGetal bestaat hier niet meer.
Als je een variabele in meerdere blokken wilt gebruiken, moet je hem buiten (boven) de if-structuur declareren.
string bericht; // Declaratie buiten de blokken
if (score > 50)
{
bericht = "Geslaagd";
}
else
{
bericht = "Gezakt";
}
Console.WriteLine(bericht); // Dit werkt nu wel
Je kunt een if-statement ook in een ander if-statement plaatsen. Dit heet “nesting”. Hoewel dit soms nodig is, maakt het je code vaak moeilijker leesbaar. Probeer waar mogelijk else if of logische operatoren (&&) te gebruiken.
if (weer == "zonnig")
{
if (temperatuur > 25)
{
Console.WriteLine("Naar het strand!");
}
else
{
Console.WriteLine("Wandelen in het park.");
}
}
De volgorde van je else if statements is cruciaal.
int getal = 15;
if (getal > 5)
{
Console.WriteLine("Groter dan 5");
}
else if (getal > 10)
{
Console.WriteLine("Groter dan 10");
}
Als getal 15 is, is het groter dan 5. Het eerste blok wordt uitgevoerd. Het tweede blok (> 10) wordt nooit gecontroleerd, ook al is 15 ook groter dan 10.
Tip: Zet de meest specifieke voorwaarde altijd bovenaan.
elseSoms vergeet je een vangnet voor als geen enkele voorwaarde waar is.
string stoplicht = "blauw";
if (stoplicht == "rood") { ... }
else if (stoplicht == "oranje") { ... }
else if (stoplicht == "groen") { ... }
Als het stoplicht “blauw” is (wat niet zou moeten kunnen, maar toch), gebeurt er nu niets. Een else blok met een foutmelding is dan handig.