TGViewer
yet another dev yet another dev @yet_another_dev · 382 subscribers
Post #354 452
Discriminated Unions в C#

#программирование@yet_another_dev

Сегодня про Discriminated Unions (DU) в C#, который вроде как должен появиться в .NET 11. Этот функционал уже доступен в Preview-версии SDK – можете установить и попробовать сами. Я попробовал и вот что я вам скажу.

1. Выглядит прикольно. Можно объединять типы.

var value = Random.Shared.Next() % 2 == 0 ?
new IsNumberOrString(int.MaxValue) :
new IsNumberOrString("Hello, World!");

var result = value switch
{
int x => $"Number: {x}",
string y => $"String: {y}",
};

Console.WriteLine(result);

public union IsNumberOrString(int, string);


2. Это синтаксический сахар. Под капотом у DU находятся структуры со всеми их типичными свойствами.

3. При компиляции структура реализует интерфейс IUnion.

public struct IsNumberOrString : IUnion
{
private readonly object <Value>k__BackingField;

public readonly object Value => this.<Value>k__BackingField;

public IsNumberOrString(int value)
{
this.<Value>k__BackingField = (object) value;
}

public IsNumberOrString(string value)
{
this.<Value>k__BackingField = (object) value;
}
}


4. Поскольку это обычная структура, то можно делать объединения объединений.

public union SmallNumbers(short, ushort);
public union BigNumbers(long, ulong);
public union Numbers(SmallNumbers, BigNumbers);


5. Я пока не знаю зачем этот функционал нужен и где бы лично я смог его применить. Возможно, он улучшит читаемость кода там, где разработчики применяют функциональный подход к написанию кода и Railway Oriented Programming. Плюс можно будет выкинуть на свалку все 3rd-party библиотеки, которые пытались реализовать тип Option/Maybe.

6. Ждите теперь больше дурацких вопросов на собеседованиях про типы и полиморфизм.

Пишите свои мысли в комментариях об этом синтаксисе.
  • 👍 2
  • ❤ 1
More from @yet_another_dev
  1. Sep 21, 2026Опубликовал вчера ролик в одной запрещённой в России соцсети про то, как сходил на выборы.…
  2. Sep 20, 2026Мы пришли в 7:50 и очередь уже была 🥲 Пообщались с другими людьми. Многие приехали из дру…
  3. Sep 19, 2026Post #383
  4. Sep 18, 2026Последние пару недель на чат нападают боты со спамом (прикрыл стикером). Поэтому чат тепер…
  5. Sep 17, 2026Что интересного в этой статье: 1. Потрачено $120К, а агенты суммарно отработали около 3-х…
  6. Sep 17, 2026В Microsoft переписали рантайм GitHub Copilot с TypeScript на Rust при помощи агентов. Под…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →