[注意:这个问题的原始标题是“ C(ish)风格的联合在C# ”,但杰夫的评论告诉我,显然这种结构被称为“歧视联盟”] 请原谅这个问题的冗长。 在我们已经有了一些类似的问题,但他们似乎集中在工会的记忆储蓄的好处或使用它的互操作性。 这是一个这样的问题的例子 。 我希望有一个工会types的东西有些不同。 我正在编写一些代码,生成看起来有点像这样的对象 public class ValueWrapper { public DateTime ValueCreationDate; // … other meta data about the value public object ValueA; public object ValueB; } 相当复杂的东西,我认为你会同意。 问题是, ValueA只能是一些特定的types(比如string , int和Foo (这是一个类),而ValueB可以是另一个小的types集合),我不喜欢把这些值当作对象(我想编码的温暖舒适的感觉与一些types的安全)。 所以我想写一个简单的小包装类来expression一个事实,即ValueA在逻辑上是对特定types的引用。 我打电话给class级Union因为我想要实现的是联盟概念。 public class Union<A, B, C> { private readonly Type type; public readonly A a; public readonly […]