C# 15 получил union-типы: закрытые наборы вариантов с проверкой компилятором
В C# 15, который выходит вместе с .NET 11 RC1, появились union-типы: они задают закрытый набор типов, а компилятор проверяет исчерпывающность switch и предупреждает CS8509 при добавлении нового варианта. Union реализован как struct с полем object?, поэтому значимые типы упаковываются, а default даёт пустое значение.
- Union задаёт закрытый набор типов: union LookupResult(Found, NotFound, Invalid)
- Компилятор требует обработки всех вариантов, иначе выдаёт warning CS8509
- Union — это struct с одним полем object?, размер 8 байт
- Значимые типы упаковываются: 1000 int в union заняли 24 000 байт
Читать дальше
Безопасность