Union types in C# 15
C# 15, disponible dans .NET 11 Preview 2, introduit le mot-clé union pour déclarer des types unions fermés qui garantissent qu'une valeur est exactement l'un d'un ensemble fixe de types avec vérification d'exhaustivité par le compilateur. Les unions s'intègrent au pattern matching existant, offrent des conversions implicites depuis chaque type de cas et exposent une propriété Value (object?) qui contient la valeur, le compilateur requérant une branche null si l'un des cas est nullable. Une union peut inclure un corps avec des membres auxiliaires pour la commodité des API (par exemple OneOrMore<T> avec AsEnumerable()), et la valeur par défaut d'une union struct a une Value nulle. Les bibliothèques peuvent définir des unions personnalisées reconnues via l'attribut [Union] et l'interface IUnion, et peuvent implémenter un accès sans boxing (HasValue/TryGetValue) pour les scénarios sensibles aux performances. La fonctionnalité est en aperçu et utilisable en .NET 11 Preview 2 (avec des instructions d'activation et un polyfill temporaire), et l'équipe de conception encourage les retours tout en proposant des fonctionnalités connexes comme les hiérarchies fermées et les enums fermés.