using System; using System.Reflection.Emit; namespace System.Linq.Expressions { /// Represents an expression that has a conditional operator. // Token: 0x02000016 RID: 22 public sealed class ConditionalExpression : Expression { // Token: 0x06000155 RID: 341 RVA: 0x00008B98 File Offset: 0x00006D98 internal ConditionalExpression(Expression test, Expression if_true, Expression if_false) : base(ExpressionType.Conditional, if_true.Type) { this.test = test; this.if_true = if_true; this.if_false = if_false; } /// Gets the test of the conditional operation. /// An that represents the test of the conditional operation. // Token: 0x17000017 RID: 23 // (get) Token: 0x06000156 RID: 342 RVA: 0x00008BC8 File Offset: 0x00006DC8 public Expression Test { get { return this.test; } } /// Gets the expression to execute if the test evaluates to true. /// An that represents the expression to execute if the test is true. // Token: 0x17000018 RID: 24 // (get) Token: 0x06000157 RID: 343 RVA: 0x00008BD0 File Offset: 0x00006DD0 public Expression IfTrue { get { return this.if_true; } } /// Gets the expression to execute if the test evaluates to false. /// An that represents the expression to execute if the test is false. // Token: 0x17000019 RID: 25 // (get) Token: 0x06000158 RID: 344 RVA: 0x00008BD8 File Offset: 0x00006DD8 public Expression IfFalse { get { return this.if_false; } } // Token: 0x06000159 RID: 345 RVA: 0x00008BE0 File Offset: 0x00006DE0 internal override void Emit(EmitContext ec) { ILGenerator ig = ec.ig; Label label = ig.DefineLabel(); Label label2 = ig.DefineLabel(); this.test.Emit(ec); ig.Emit(OpCodes.Brfalse, label); this.if_true.Emit(ec); ig.Emit(OpCodes.Br, label2); ig.MarkLabel(label); this.if_false.Emit(ec); ig.MarkLabel(label2); } // Token: 0x0400005E RID: 94 private Expression test; // Token: 0x0400005F RID: 95 private Expression if_true; // Token: 0x04000060 RID: 96 private Expression if_false; } }