Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

Soms wil je voor één variabele verschillende waarden afzonderlijk testen. Een groep bezoekers krijgt bijvoorbeeld korting afhankelijk van hoe groot de groep is. Hoe schrijf je dat netjes op?

Aanpak 1: losse if-statements

De eerste aanpak is voor elke test een afzonderlijk if-statement schrijven:

Console.Write("Met hoeveel zijn jullie? ");
int aantal = Convert.ToInt32(Console.ReadLine());

if (aantal == 1 || aantal == 2)
{
    Console.WriteLine("Helaas, jullie krijgen geen korting");
}
if (aantal == 3)
{
    Console.WriteLine("Jullie krijgen 10% korting");
}
if (aantal == 4)
{
    Console.WriteLine("Jullie krijgen 20% korting");
}
if (aantal >= 5)
{
    Console.WriteLine("Jullie mogen gratis binnen");
}

Dit werkt, maar de computer test élk if-statement, ook al is er al een match gevonden. Bij veel keuzes wordt dat onnodig veel werk.

Aanpak 2: een else-if-keten

Beter is de tests te koppelen met else if. Zodra aan een voorwaarde voldaan is, worden de volgende voorwaarden niet meer getest. Je programma wordt daardoor iets efficiënter, en het is meteen ook duidelijker dat er precies één pad gekozen wordt:

Console.Write("Met hoeveel zijn jullie? ");
int aantal = Convert.ToInt32(Console.ReadLine());

if (aantal == 1 || aantal == 2)
{
    Console.WriteLine("Helaas, jullie krijgen geen korting");
}
else if (aantal == 3)
{
    Console.WriteLine("Jullie krijgen 10% korting");
}
else if (aantal == 4)
{
    Console.WriteLine("Jullie krijgen 20% korting");
}
else
{
    Console.WriteLine("Jullie mogen gratis binnen");
}

Het laatste else (zonder voorwaarde) vangt alle overige gevallen op: hier elke groep van 5 of meer.

Hetzelfde met geneste if-statements

Een else if-keten is eigenlijk een korte schrijfwijze voor if-statements die in elkaar genest zitten: in het else-deel van de ene keuze begint de volgende keuze.

if (aantal == 1 || aantal == 2)
{
    Console.WriteLine("Helaas, jullie krijgen geen korting");
}
else
{
    if (aantal == 3)
    {
        Console.WriteLine("Jullie krijgen 10% korting");
    }
    else
    {
        if (aantal == 4)
        {
            Console.WriteLine("Jullie krijgen 20% korting");
        }
        else
        {
            Console.WriteLine("Jullie mogen gratis binnen");
        }
    }
}

Beide laatste versies doen exact hetzelfde. De else if-keten is korter en makkelijker te lezen, dus die schrijfwijze gebruik je het best.

Test je dezelfde variabele tegen een hele rij vaste waarden, dan bestaat daar later nog een nettere schrijfwijze voor: het switch-statement. Dat zie je in een volgende reeks.