C# Academy · Les

Relationele en logische patronen

Combineer voorwaarden in patronen.

Les 3 van 413 stappen

Relationele en logische patronen is een gratis C# Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 4 lessen.

Relationele patronen

Een relationeel patroon vergelijkt de invoer met een constante met behulp van <, >, <= of >=. Het komt overeen wanneer de vergelijking waar is.

Relationele patronen zijn geïntroduceerd in C# 9 en maken bereikcontroles beknopt in switch-armen en is-expressies, zonder expliciete vergelijkingen te schrijven.

int temp = 18;
string level = temp switch
{
    < 0  => "freezing",
    < 15 => "cold",
    < 25 => "mild",
    _    => "hot"
};
System.Console.WriteLine(level);

Relationeel met is

Relationele patronen werken ook in is-expressies, waardoor je leesbare Booleaanse controles krijgt.

n is > 0 leest bijna als een Nederlandse zin en retourneert een bool die je in voorwaarden, toewijzingen of LINQ-predicaten kunt gebruiken.

using System;

class Program {
    static void Main() {
        int score = 82;
        bool passed = score is >= 60;
        Console.WriteLine(passed);
    }
}

Het and-patroon

Het logische patroon and vereist dat beide deelpatronen overeenkomen. Het is ideaal voor begrensde bereiken.

>= 1 and <= 12 komt overeen met waarden binnen een inclusief bereik. Zonder and zou je grenzen aan twee kanten niet in één patroon kunnen uitdrukken.

int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);

Het or-patroon

Het logische patroon or komt overeen wanneer een van beide deelpatronen overeenkomt. Zo groepeer je alternatieve waarden in één arm.

In plaats van armen voor verwante gevallen te herhalen, voegt 'a' or 'e' or 'i' ze samen. Zo blijven switch-expressies compact en wordt de bedoeling duidelijk.

char c = 'e';
string kind = c switch
{
    'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
    _ => "consonant"
};
System.Console.WriteLine(kind);

Het not-patroon

Het logische patroon not komt overeen wanneer het deelpatroon niet overeenkomt. De meest voorkomende toepassing is not null.

Je kunt er ook andere patronen mee negëren, zoals not 0 of not (> 100), zodat je uitsluitingen duidelijk in één arm kunt uitdrukken.

object? value = "hi";
if (value is not null)
    System.Console.WriteLine("present");

Logische patronen combineren

Logische patronen kunnen worden gecombineerd. Je kunt and, or en not aan elkaar koppelen om uitgebreide voorwaarden te bouwen en haakjes gebruiken om de prioriteit te bepalen.

De prioriteit is: not bindt het sterkst, daarna and en vervolgens or. Voeg haakjes toe wanneer de bedoeling mogelijk onduidelijk is.

using System;

class Program {
    static string Classify(int n) => n switch {
        < 0 or > 100 => "out of range",
        >= 0 and <= 50 => "low half",
        _ => "high half"
    };
    static void Main() => Console.WriteLine(Classify(75));
}

Bereiken in cijferindelingen

Met relationele en logische patronen samen kun je klassieke cijferindelingen netjes modelleren.

Omdat armen van boven naar beneden worden gecontroleerd, kun je eenvoudige bovengrenzen gebruiken of grenzen met and combineren voor expliciete bereiken. Beide stijlen zijn geldig; kies de duidelijkste.

using System;

class Program {
    static char Grade(int s) => s switch {
        >= 90 => 'A',
        >= 80 and < 90 => 'B',
        >= 70 and < 80 => 'C',
        _ => 'F'
    };
    static void Main() => Console.WriteLine(Grade(85));
}

not null met eigenschappatronen

Door not null te combineren met type- en eigenschappatronen krijg je veilige, expressieve voorwaarden.

obj is Person { Name: not null } p komt overeen met een niet-null Person waarvan Name ook niet null is, en koppelt die aan een variabele. Zo vermijd je opeenvolgende null-controles.

record Person(string? Name);

object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
    System.Console.WriteLine(p.Name);

Bereiken negëren

Je kunt een relationele groep met not en haakjes negëren om uitsluitingen uit te drukken.

not (>= 1 and <= 5) komt overeen met alles buiten het bereik van 1 tot en met 5. Voor sommige lezers is dit directer leesbaar dan het gelijkwaardige < 1 or > 5.

using System;

class Program {
    static void Main() {
        int n = 9;
        bool outside = n is not (>= 1 and <= 5);
        Console.WriteLine(outside);
    }
}

Combineren met typepatronen

Je kunt logische patronen ook met typepatronen combineren. o is int or long komt in één controle overeen met gehele numerieke typen.

Dit is handig als je meerdere verwante typen op dezelfde manier wilt behandelen. Let erop dat beide kanten van or compatibel moeten zijn met de manier waarop je het resultaat gebruikt.

object o = 5L;
string kind = o switch
{
    int or long => "integral",
    float or double => "floating",
    _ => "other"
};
System.Console.WriteLine(kind);

Richtlijnen voor leesbaarheid

Logische patronen zijn expressief, maar kunnen compact worden. Houd takken kort, geef de voorkeur aan bereiken met and en zet combinaties van and/or tussen haakjes voor duidelijkheid.

Wanneer een voorwaarde veel clausules of externe variabelen nodig heeft, leest een when-voorwaarde mogelijk beter dan een lang logisch patroon. Kies wat de bedoeling het duidelijkst overbrengt.

int n = 42;
string r = n switch
{
    > 0 and < 10 when n % 2 == 0 => "small even",
    _ => "other"
};
System.Console.WriteLine(r);

Korte toets

Toets je begrip van relationele en logische patronen.

Samenvatting

Relationele patronen (< > <= >=) vergelijken met constanten. Logische patronen combineren deelpatronen met and, or en not.

De prioriteit is not, daarna and en vervolgens or; gebruik haakjes bij combinaties. Hierna behandelen we lijst- en tuplepatronen.

Gratis beginnen

Leer C# met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
93
Lessen
346

Veelgestelde vragen

Is de les “Relationele en logische patronen” gratis?

Ja — de volledige tekst van “Relationele en logische patronen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 4 lessen.

Wat leer ik in “Relationele en logische patronen”?

Combineer voorwaarden in patronen. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C# Academy te beginnen?

Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Relationele en logische patronen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C# Academy?

Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. switch-expressies
  2. Type- en propertypatronen
  3. Relationele en logische patronen
  4. Lijst- en tuplepatronen
← Terug naar C# Academy