n00b pro

02. Selecties

Dit hoofdstuk is onderdeel van de cursus C#. Andere cursussen in dezelfde reeks: HTML, CSS, Javascript, Ontwikkelomgeving.

Op Youtube

Deze video maakt deel uit van de IIP playlist van de Youtube channel van Rogier van der Linde.

Let op: deze video's zijn al een paar jaar oud, dus hier en daar kunnen kleine afwijkingen voorkomen met deze cursus, die wel altijd up-to-date is.

https://www.youtube.com/watch?v=K3Rlwyq2NRo

Relationele operatoren

Relationele operatoren worden gebruikt om twee waarden met elkaar te vergelijken. Het resultaat van een vergelijking is altijd een boolean (bool).

Operator Beschrijving Voorbeeld
== gelijk aan x == 100
!= niet gelijk aan x != 100
< kleiner dan x < 100
> groter dan x > 100
<= kleiner dan of gelijk aan x <= 100
>= groter dan of gelijk aan x >= 100

Selectie-structuren

Met behulp van selectie-structuren kan je bepalen welk(e) statement(s) moet(en) uitgevoerd worden op basis van een voorwaarde (= conditie).

IF-selectie

Indien de voorwaarde true oplevert, worden de statements binnen de accolades uitgevoerd.

if-flowchart

if (voorwaarde)
{
    // statements indien waar
}

Code voorbeeld:

int getal = 10;

if (getal > 5)
{
    Console.WriteLine("Het getal is groter dan 5");
}
Het getal is groter dan 5
resultaat in de console

IF ELSE-selectie

Indien de voorwaarde true oplevert, worden de statements binnen het if-blok uitgevoerd. In het andere geval, worden de statements binnen het else-blok uitgevoerd.

if-flowchart

if (voorwaarde)
{
    // statements indien waar
}
else
{
    // statements indien niet waar
}

Code voorbeeld:

int leeftijd = 15;

if (leeftijd >= 18)
{
    Console.WriteLine("Je bent oud genoeg om te stemmen");
}
else
{
    Console.WriteLine("Je bent nog niet oud genoeg om te stemmen");
}
Je bent nog niet oud genoeg om te stemmen
resultaat in de console

Multiple IF ELSE-selectie

De multiple IF – ELSE structuur is een uitbreiding op de gewone IF ELSE-structuur, waarbij je meerdere voorwaarden controleert:

if (voorwaarde1)
{
   // instructies indien voorwaarde1 waar
}
else if (voorwaarde2)
{
   // instructies indien voorwaarde2 waar
}
else if (voorwaarde3)
{
   // instructies indien voorwaarde3 waar
}
else
{
   // instructies in alle andere gevallen
}

Opmerking: het laatste else-blok is optioneel.

Code voorbeeld:

string maand = "sep";

if (maand == "feb")
{
    Console.WriteLine("Deze maand telt 28 dagen");
}
else if (maand == "apr" || maand == "jun" || maand == "sep" || maand == "nov")
{
    Console.WriteLine("Deze maand telt 30 dagen");
}
else
{
    Console.WriteLine("De maand telt 31 dagen");
}
Deze maand telt 30 dagen
resultaat in de console

SWITCH-CASE selectie

Bij een switch-case selectie wordt een variabele vergeleken met een reeks waarden, waarna de bijhorende instructies uitgevoerd worden.

switch-case flowchart

switch (variabele)
{
   case (waarde 1): instructie 1; break;
   case (waarde 2): instructie 2; break;
   case (waarde 3): instructie 3; break;
   ...
   case (waarde N): instructie N; break;
   default: instructie N+1;
}

Opmerking: het default-label zal uitgevoerd worden indien de waarde van de variabele met geen enkele case-waarde overeenkomt. Het opnemen van een default-label is optioneel.

Code voorbeeld:

int dagNummer = 4;

switch (dagNummer)
{
    case 1: Console.Write("maandag"); break;
    case 2: Console.Write("dinsdag"); break;
    case 3: Console.Write("woensdag"); break;
    case 4: Console.Write("donderdag"); break;
    case 5: Console.Write("vrijdag"); break;
    case 6: Console.Write("zaterdag"); break;
    case 7: Console.Write("zondag"); break;
    default: Console.WriteLine("Ongeldig dagnummer!"); break;
}

Console.WriteLine(" is een hatelijke dag");
donderdag is een hatelijke dag
resultaat in de console

Ternaire operator

De ternaire operator is een verkorte notatie om een keuze te maken tussen twee waarden, op basis van een voowaarde.

voorwaarde ? waarde-als-true : waarde-als-false
int getal1 = 10;
int getal2 = 15;

int grootste = getal1 > getal2 ? getal1 : getal2;

Console.WriteLine($"Het grootste getal is: {grootste}");
Het grootste getal is: 15
resultaat in de console

Opmerking: bovenstaande code is equivalent aan onderstaande if-else-structuur:

int getal1 = 10;
int getal2 = 15;

int grootste;

if (getal1 > getal2)
{
    grootste = getal1;
}
else
{
    grootste = getal2;
}

Console.WriteLine($"Het grootste getal is: {grootste}");
Het grootste getal is: 15
resultaat in de console

Null conditional operator (a.k.a. Elvis operator)

Syntax: a?.b

Betekent: “als a null is, neem null, anders property b”.
Neem volgend fragment:

string userName = null;
if (user != null) { // user may be null
    userName = user.Name;
}

Dit kan veel korter met de Elvis operator:

string userName = user?.Name; // null als user null is, anders user.Name

Je kan meerdere Elvis operatoren in één statement gebruiken:

string btwNumber = persons?[0].Partner?.Company?.VatNumber; // null als ergens een null voorkomt

Null coalescing operator

Syntax: a ?? b

Betekent: “als a null is, neem dan b”. Is hetzelfde als a == null ? b : a.
Voorbeeldfragment:

string hello = $"welcome {name ?? " stranger"}";

Het werkt prima samen met de Elvis operator:

string name = user?.Name ?? " stranger";