C#でもユニオン型
2026年11月にリリースを予定されている.NET 11ではC# 15がサポートされます。C# 15で新たに追加される機能の一つがユニオン型です。 ユニオン型とは、指定した複数の型のうち、いずれか一つの値を持つことができる型のことです。 public record struct Cat(string Name); public record struct Dog(string Name); public record struct Bird(string Name); public union Pet(Cat, Dog, Bird); Valueプロパティから値をObject?型として取得できます。 Pet pet1 = new Dog("Rex"); Console.WriteLine(pet1.Value); // Dog { Name = Rex } Pet pet2 = new Cat("Whiskers"); Console.WriteLine(pet2.Value); // Cat { Name = Whiskers } ユニオン型の真価は、switch式と組み合わせたときに発揮されます。コンパイラがパターンをチェックしてくれるため、型の安全性が高まります。パターンが不足していればビルド時に警告が出るため、バグを未然に防ぐことができます。 Pet pet = new Dog("Rex"); var petDescription = pet switch // この switch 式では入力型の可能な値がすべて扱われるわけではありません (すべてが網羅されているわけではありません)。たとえば、パターン 'Bird' がカバーされていません。 { Dog dog => $"It's a dog named {dog.Name}", Cat cat => $"It's a cat named {cat.Name}", }; Console.WriteLine(petDescription); // It's a dog named Rex まだプレビュー段階の機能ですが、正...