Sébastien Rigaux

C# 15 : des unions exhaustives, avec un coût de boxing à surveiller

ArticleC#.NET
Consulter la ressourceEN

andrewlock.net

C# 15 introduit le mot-clé union pour représenter une valeur parmi plusieurs types sans les regrouper dans une classe de base ni perdre leur typage dans object. Andrew Lock montre comment les switch expressions vérifient que chaque cas est traité, et comment déclarer des unions comme Result<T>.

Le détail à considérer côté performance : l’implémentation générée stocke la valeur dans un object, ce qui boxe les types valeur. L’article présente une implémentation personnalisée avec TryGetValue pour éviter ce boxing dans les switch.

Extrait de code C# déclarant les records Windows, Linux et MacOS, puis une union SupportedOS contenant ces trois types.