· · 1 minut czytania

C# 15 Dostaje Typy Unii — I Są Dokładnie Tym, O Co Prosiliśmy

C# 15 wprowadza słowo kluczowe `union` — dyskryminowane unie egzekwowane przez kompilator z wyczerpującym dopasowaniem wzorców. Oto jak wyglądają, dlaczego mają znaczenie i jak je wypróbować.

csharp dotnet union-types pattern-matching dotnet-11 language-features
Ten post jest dostępny również w:English, Català, Español, Deutsch, Français, Português, Italiano, 日本語, 中文, 한국어, Русский, हिन्दी, Türkçe, العربية, Bahasa Indonesia, Nederlands

Ten post został automatycznie przetłumaczony. Aby przejść do oryginału, kliknij tutaj.

Na to czekałem. C# 15 wprowadza słowo kluczowe union — właściwe dyskryminowane unie z wyczerpującym dopasowaniem wzorców egzekwowanym przez kompilator.

Bill Wagner opublikował głębokie omówienie.

Problem rozwiązywany przez unie

Przed C# 15, zwracanie “jednego z kilku możliwych typów” było zawsze kompromisem. Nigdy nie dostawałeś tego, czego naprawdę chcesz: zamkniętego zbioru typów, gdzie kompilator gwarantuje, że obsłużyłeś każdy przypadek.

Składnia jest pięknie prosta

public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);

public union Pet(Cat, Dog, Bird);

A oto magia — kompilator egzekwuje wyczerpujące dopasowanie:

string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

Nie potrzeba _. Jeśli później dodasz czwarty typ do unii, każde wyrażenie switch, które go nie obsługuje, generuje ostrzeżenie.

Zastosowanie praktyczne

public union ApiResult<T>(T, ApiError, ValidationFailure);

Teraz każdy konsument jest zmuszony obsłużyć sukces, błąd i niepowodzenie walidacji.

Wypróbuj już dziś

Typy unii są dostępne w .NET 11 Preview 2. Sprawdź pełną dokumentację.

Udostępnij:
Zobacz kod źródłowy tego posta na GitHub ↗
← Aspire 13.2 Dostarcza CLI do Dokumentacji — i Twój Agent AI Też Może Go Używać
VS Code 1.115 — powiadomienia terminala w tle, tryb agenta przez SSH i więcej →