Union discriminée en C #

[Note: Cette question avait le titre original " Union de style C (ish) en C # " mais comme le commentaire de Jeff m'a informé, apparemment cette structure s'appelle une "union discriminée"] Excusez la verbosité de cette question. Il y a quelques questions similaires aux miennes déjà dans SO, mais...