public static void GetQuantityTwo()
 {
     // get a random quantity
     UseUnionType.Quantity q = UseUnionType.getRandomQuantity();
     // use if ... else chain to display value
     if (q.IsDiscrete)
     {
         Console.WriteLine("Discrete value: {0}", ((UseUnionType.Quantity.Discrete)q).Item);
     }
     else if (q.IsContinuous)
     {
         Console.WriteLine("Continuous value: {0}", ((UseUnionType.Quantity.Continuous)q).Item);
     }
 }
        public static void GetQuantityZero()
        {
            // initialize both a Discrete and Continuous quantity

            /* you cannot do the following, but
             *
             * UseUnionType.Quantity d = UseUnionType.Quantity.Discrete(12);
             * UseUnionType.Quantity c = UseUnionType.Quantity.Continuous(12.0);
             *
             */


            /* but you are allowed to do the following
             */
            UseUnionType.Quantity d = UseUnionType.Quantity.NewDiscrete(12);
            UseUnionType.Quantity c = UseUnionType.Quantity.NewContinuous(12.0);
        }
        public static void GetQuantityOne()
        {
            // get a random quantity
            UseUnionType.Quantity q = UseUnionType.getRandomQuantity();

            // switch the .Tag property to switch over the quantity
            switch (q.Tag)
            {
            case UseUnionType.Quantity.Tags.Discrete:
                //Console.WriteLine("Discrete value: {0}", UseUnionType.Quantity.Tags.Discrete);
                Console.WriteLine("Discrete value: {0}", ((UseUnionType.Quantity.Discrete)q).Item);
                break;

            case UseUnionType.Quantity.Tags.Continuous:
                //Console.WriteLine("Continuous value: {0}", q.ToString());
                Console.WriteLine("Continous value: {0}", ((UseUnionType.Quantity.Continuous)q).Item);
                break;
            }
        }