Relationele en logische patronen
Combineer voorwaarden in patronen.
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.
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
- switch-expressies
- Type- en propertypatronen
- Relationele en logische patronen
- Lijst- en tuplepatronen