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;
}
}