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.
