Nullable waardetypen
int? en de Nullable-struct.
Nullable waardetypen is een gratis C# Academy-les op CoddyKit. Dit is les 1 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.
Waarom nullable waardetypen?
Waardetypen zoals int, bool en DateTime bevatten altijd een waarde. Een int krijgt standaard de waarde 0 en kan nooit "geen waarde" bevatten.
Soms moet je ontbrekende gegevens kunnen aangeven, zoals een onbeantwoord veld in een enquête of een lege kolom in een database. Nullable waardetypen zorgen ervoor dat een waardetype ook null kan bevatten.
Declareren met int?
Voeg een ? toe na een waardetype om het nullable te maken. int? kan elk geheel getal of null bevatten.
Dit is de meest gebruikelijke manier waarop je nullable waardetypen schrijft in alledaagse C#-code.
int? age = null;
int count = 5;
age = count;
System.Console.WriteLine(age);Nullable<T> achter de schermen
De syntaxis met ? is een verkorte schrijfwijze. int? is precies hetzelfde type als Nullable<int>.
Nullable<T> is een struct die een waardetype omhult en een vlag toevoegt die bijhoudt of er een waarde aanwezig is.
Nullable<int> a = 10;
int? b = 10;
System.Console.WriteLine(a == b);HasValue en Value
Elk nullable type stelt twee eigenschappen beschikbaar. HasValue is true wanneer er een waarde aanwezig is en Value retourneert de onderliggende waarde.
Als je Value leest terwijl HasValue false is, wordt een InvalidOperationException gegooid. Controleer dit dus eerst.
int? score = 42;
if (score.HasValue)
{
System.Console.WriteLine(score.Value);
}Een compleet voorbeeld
Hier is een volledig programma. Het wijst een waarde toe, controleert HasValue en drukt het resultaat af.
Voer het programma uit om te zien hoe een nullable type zich gedraagt wanneer het daadwerkelijk gegevens bevat.
using System;
class Program
{
static void Main()
{
int? temperature = 21;
if (temperature.HasValue)
Console.WriteLine("Temp: " + temperature.Value);
else
Console.WriteLine("No reading");
}
}Wanneer de waarde null is
Door null toe te wijzen retourneert HasValue false. Daarna wordt de else-tak uitgevoerd.
Met dit patroon verwerk je optionele waarden veilig zonder dat het programma crasht.
using System;
class Program
{
static void Main()
{
int? temperature = null;
if (temperature.HasValue)
Console.WriteLine(temperature.Value);
else
Console.WriteLine("No reading");
}
}GetValueOrDefault
GetValueOrDefault() retourneert de waarde als die aanwezig is; anders de standaardwaarde voor dat type (zoals 0 voor int).
Je kunt ook je eigen terugvalwaarde meegeven: GetValueOrDefault(100) retourneert 100 als de waarde null is.
int? quantity = null;
int result = quantity.GetValueOrDefault(100);
System.Console.WriteLine(result);Impliciete conversie naar nullable
Een gewone int wordt automatisch geconverteerd naar int?, omdat elke gewone waarde ook een geldige nullable waarde is.
Omgekeerd gebeurt dat niet automatisch: van int? teruggaan naar int vereist een expliciete cast of een terugvalwaarde, omdat de nullable waarde null kan zijn.
int plain = 7;
int? wrapped = plain;
int back = (int)wrapped;
System.Console.WriteLine(back);Nullable met andere waardetypen
Elk waardetype werkt: bool?, double?, DateTime? en zelfs aangepaste structuren.
Een bool? heeft drie toestanden: true, false en null. Dat is handig voor onbeantwoorde ja-of-neevragen.
bool? agreed = null;
double? price = 9.99;
System.Console.WriteLine(agreed.HasValue);
System.Console.WriteLine(price.Value);Referentietypen zijn al nullable
Klassen zoals string en arrays kunnen al null zijn, dus ze hebben de Nullable<T>-omhulling niet nodig.
De ? bij referentietypen (zoals string?) betekent iets anders: het is een nullable-referentieannotatie, niet de Nullable<T>-structuur.
Nullable waarden vergelijken
Vergelijkingen werken, maar houd er rekening mee dat null zich speciaal gedraagt. Twee null-waarden zijn gelijk en elke geordende vergelijking met null retourneert false.
Dus null < 5 is false en null > 5 is ook false.
int? x = null;
System.Console.WriteLine(x < 5);
System.Console.WriteLine(x == null);Korte toets
Toets je begrip van nullable waardetypen.
Samenvatting
Met nullable waardetypen kunnen waardetypen ook null bevatten. Je schrijft ze als int?, wat gelijk is aan Nullable<int>.
Gebruik HasValue om te controleren, Value om de waarde te lezen (alleen als die aanwezig is) en GetValueOrDefault() voor een veilige terugvalwaarde. Referentietypen zijn uit zichzelf al nullable.
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 “Nullable waardetypen” gratis?
Ja — de volledige tekst van “Nullable waardetypen” 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 “Nullable waardetypen”?
int? en de Nullable-struct. 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 1 van 4.
Hoe lang duurt de les “Nullable waardetypen”?
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
- Nullable waardetypen
- Null-conditional operator
- Null-coalescing-operatoren
- Nullwaarden afvangen