Nullable referentietypen (bewustzijn) en annotaties (C# 6-patronen)
C# 6 heeft geen nullable referentietypen (string?). Leer null veilig af te handelen met invoercontroles, duidelijke documentatie en de helper Require.NotNull, en vergelijk dit met Nullable voor waardetypen.
Nullable referentietypen (bewustzijn) en annotaties (C# 6-patronen) is een gratis C# Academy-les op CoddyKit. Dit is les 3 van 3. 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 3 lessen.
Bewust omgaan met NRT's en terugvalopties
Idee: nullable-referentietypen (bijvoorbeeld string?) voegen compilercontroles toe in nieuwere versies van C#.
- C# 6 ondersteunt string? niet.
- Gebruik controles, duidelijke documentatie en eenvoudige hulpmethoden.
- Retourneer standaard een niet-nullwaarde.
Bescherm tegen nullwaarden
Voeg ArgumentNullException-controles toe voor parameters van referentietypen en behandel de waarden daarna als niet-null.
using System;
public static class Greeter
{
// Contract: name must not be null (C# 6 has no string? to enforce)
public static string Hello(string name)
{
if (name == null) throw new ArgumentNullException("name"); // guard
return "Hello " + name.ToUpper(); // safe after guard
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Greeter.Hello("Ada"));
try
{
Console.WriteLine(Greeter.Hello(null)); // will throw (by design)
}
catch (Exception ex)
{
Console.WriteLine("Caught: " + ex.GetType().Name);
}
}
}
Require.NotNull-hulpmethode
Maak een kleine Require.NotNull-hulpmethode om overbodige code te beperken en de bedoeling duidelijk te maken.
using System;
public static class Require
{
// Works for reference types; returns the validated value
public static T NotNull<T>(T value, string name) where T : class
{
if (value == null) throw new ArgumentNullException(name);
return value;
}
}
public sealed class Email
{
public string Address { get; private set; }
public Email(string address)
{
Address = Require.NotNull(address, "address").Trim();
}
}
public class Program
{
public static void Main(string[] args)
{
Email e = new Email("user@mail.com");
Console.WriteLine(e.Address);
}
}
Nullable<T> tegenover referentietypen
Nullable<T> (bijvoorbeeld int?) is bedoeld voor waardetypen. Referentietypen kunnen al null zijn; in C# 6 gebruiken we controles.
using System;
public class Program
{
public static void Main(string[] args)
{
int x = 5; // value type (non-nullable)
int? maybe = null; // Nullable<T> works for value types
Console.WriteLine("x=" + x);
Console.WriteLine("maybe has value? " + maybe.HasValue);
Console.WriteLine("maybe or default: " + (maybe ?? -1));
}
}
Nullcontracten documenteren
Geef nullbaarheid aan in XML-documentatie en wees consequent: retourneer altijd een niet-nullwaarde of documenteer duidelijk wanneer null mogelijk is.
using System;
/// <summary>
/// Parses "key=value" and returns the value part.
/// Returns null if the format is invalid.
/// </summary>
public static class Parser
{
// Explicitly document when null can be returned.
public static string TryGetValue(string line)
{
if (line == null) throw new ArgumentNullException("line");
int idx = line.IndexOf("=");
if (idx < 0 || idx == line.Length - 1) return null; // documented nullable return
return line.Substring(idx + 1);
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Parser.TryGetValue("a=1"));
Console.WriteLine(Parser.TryGetValue("oops")); // prints nothing (null)
}
}
Checklist voor nullveiligheid (C# 6)
Checklist:
- Controleer invoer met ArgumentNullException.
- Retourneer standaard een niet-nullwaarde en documenteer retourneerwaarden die null kunnen zijn.
- Gebruik kleine hulpmethoden (Require.NotNull) om de code overzichtelijk te houden.
- Geef waar zinvol de voorkeur aan overloads die nullwaarden vermijden (bijvoorbeeld een lege tekenreeks in plaats van null).
Nullveiligheid in C# 6
Samenvatting
Samenvatting: NRT's zijn een nieuwere functie. Blijf in C# 6 veilig met controles, duidelijke documentatie, hulpprocedures en voorspelbare contracten voor niet-null retourwaarden.
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 referentietypen (bewustzijn) en annotaties (C# 6-patronen)” gratis?
Ja — de volledige tekst van “Nullable referentietypen (bewustzijn) en annotaties (C# 6-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 3 lessen.
Wat leer ik in “Nullable referentietypen (bewustzijn) en annotaties (C# 6-patronen)”?
C# 6 heeft geen nullable referentietypen (string?). Leer null veilig af te handelen met invoercontroles, duidelijke documentatie en de helper Require.NotNull, en vergelijk dit met Nullable voor waard… 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 3.
Hoe lang duurt de les “Nullable referentietypen (bewustzijn) en annotaties (C# 6-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
- Generieke methods/typen; constraints
- Variantie (in/out) met interfaces en delegates
- Nullable referentietypen (bewustzijn) en annotaties (C# 6-patronen)