· · 1 minuten lezen

C# 15 Krijgt Union Types — En Ze Zijn Precies Wat We Vroegen

C# 15 introduceert het `union` sleutelwoord — door de compiler afgedwongen gediscrimineerde unions met uitputtende patroonovereenkomst. Hoe ze eruitzien, waarom ze belangrijk zijn en hoe je ze vandaag kunt uitproberen.

csharp dotnet union-types pattern-matching dotnet-11 language-features
Dit bericht is ook beschikbaar in:English, Català, Español, Deutsch, Français, Português, Italiano, 日本語, 中文, 한국어, Русский, हिन्दी, Polski, Türkçe, العربية, Bahasa Indonesia

Dit bericht is automatisch vertaald. Voor het origineel, klik hier.

Dit is degene waar ik op heb gewacht. C# 15 introduceert het union sleutelwoord — echte gediscrimineerde unions met door de compiler afgedwongen uitputtende patroonovereenkomst.

Bill Wagner publiceerde de diepgaande bespreking.

Het probleem dat unions oplossen

Vóór C# 15 was het terugkeren van “een van meerdere mogelijke typen” altijd een compromis. Je kreeg nooit wat je echt wilt: een gesloten set typen waarbij de compiler garandeert dat je elk geval hebt afgehandeld.

De syntaxis is prachtig eenvoudig

public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);

public union Pet(Cat, Dog, Bird);

En hier is de magie — de compiler dwingt uitputtende overeenkomst af:

string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

Geen _ nodig. Als je later een vierde type aan de union toevoegt, produceert elke switch-expressie die het niet afhandelt een waarschuwing.

Waar dit praktisch wordt

public union ApiResult<T>(T, ApiError, ValidationFailure);

Nu is elke consument gedwongen succes, fout en validatiemislukking te behandelen.

Probeer het vandaag

Union types zijn beschikbaar in .NET 11 Preview 2. Bekijk de volledige taalreferentie.

Delen:
Bekijk de broncode van dit bericht op GitHub ↗
← Aspire 13.2 Brengt een Docs CLI — en je AI-Agent Kan die Ook Gebruiken
VS Code 1.115 — Achtergrondterminalnotificaties, SSH-agentmodus en Meer →