C# Эквивалент для C++ std::variant (тип суммы/дискриминируемое объединение)C#

Место общения программистов C#
Anonymous
C# Эквивалент для C++ std::variant (тип суммы/дискриминируемое объединение)

Сообщение Anonymous »

В C++ у нас есть std::variant для создания типов сумм (также известных как дискриминируемое объединение).

Например, следующее позволит v хранить либо std::string, либо int:

Код: Выделить всё

#include 
#include 

//...

std::variant< std::string, int> v;
v = "aaa";  // now v holds a std::string
v = 5;      // now v holds an int
Кроме того, компилятор будет требовать, чтобы вы присваивали v только значения, конвертируемые в std::string или int.
Я ищу аналогичную конструкцию в C#.

Просмотрел этот пост: Тип варианта в C#,
но он не предложил надлежащего эквивалента, который я ищу.
Есть есть ли такой на C#?

Изменить:

Сообщение SO «Дискриминированное объединение в C#» связано, но не совсем отвечает на мой вопрос, потому что я ищу общую языковую конструкцию, а не решение для конкретного случая.

Однако в одном из ответов упоминается библиотека OneOf, которая также является одним из решений в принятом ответе здесь.

Вернуться в «C#»