Beispiel #1
0
        internal override void Emit(ILGenerator ilg, bool preserve)
        {
            Cond.Emit(ilg);
            var lbFalse = ilg.DefineLabel();
            var lbTrue  = ilg.DefineLabel();

            ilg.Emit(OpCodes.Brfalse, lbFalse);
            True.Emit(ilg);
            ilg.Emit(OpCodes.Br, lbTrue);
            ilg.MarkLabel(lbFalse);
            False.Emit(ilg);
            ilg.MarkLabel(lbTrue);

            if (!preserve)
            {
                ilg.Emit(OpCodes.Pop);
            }
        }