Например, следующее позволит 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
Я ищу аналогичную конструкцию в C#.
Просмотрел этот пост: Тип варианта в C#,
но он не предложил надлежащего эквивалента, который я ищу.
Есть есть ли такой на C#?
Изменить:
Сообщение SO «Дискриминированное объединение в C#» связано, но не совсем отвечает на мой вопрос, потому что я ищу общую языковую конструкцию, а не решение для конкретного случая.
Однако в одном из ответов упоминается библиотека OneOf, которая также является одним из решений в принятом ответе здесь.