.NET (OK, C#) finally gets union types
.NET 11 (C# 15) introduit le mot-clé union pour définir des types pouvant représenter plusieurs cas distincts, comme Result<T> ou Option<T>. La déclaration public union SupportedOS(Windows, Linux, MacOS) génère une struct décorée par [Union] qui implémente IUnion, expose une propriété object? Value et fournit un constructeur pour chaque cas, avec conversion implicite gérée par le compilateur. L'usage canonique se fait via les expressions switch qui extraient automatiquement le cas interne et exigent l'exhaustivité, en obligeant à gérer null si l'un des cas est nullable. L'implémentation par défaut stocke la valeur dans un object et peut provoquer du boxing pour les types valeur, mais il est possible de fournir des implémentations personnalisées non-boxantes en ajoutant HasValue et des méthodes TryGetValue(out T). Pour utiliser les unions il faut installer le SDK .NET 11 preview et activer LangVersion preview, des types d'aide sont parfois nécessaires pour les runtimes antérieurs, et des fonctionnalités comme les fournisseurs de membres d'union, les enums fermés et les hiérarchies fermées sont envisagées.