/// <summary> /// Creates a new expression that is like this one, but using the supplied children. If all of the children are the same, it will return this expression. /// </summary> /// <param name="breakLabel">The <see cref="LoopCSharpStatement.BreakLabel" /> property of the result.</param> /// <param name="continueLabel">The <see cref="LoopCSharpStatement.ContinueLabel" /> property of the result.</param> /// <param name="body">The <see cref="LoopCSharpStatement.Body" /> property of the result.</param> /// <param name="test">The <see cref="ConditionalLoopCSharpStatement.Test" /> property of the result.</param> /// <param name="locals">The <see cref="ConditionalLoopCSharpStatement.Locals" /> property of the result.</param> /// <returns>This expression if no children changed, or an expression with the updated children.</returns> public DoCSharpStatement Update(LabelTarget breakLabel, LabelTarget continueLabel, Expression body, Expression test, IEnumerable <ParameterExpression> locals) { if (breakLabel == BreakLabel && continueLabel == ContinueLabel && body == Body && test == Test && SameElements(ref locals, this.Locals)) { return(this); } return(CSharpExpression.Do(body, test, breakLabel, continueLabel, locals)); }
/// <summary> /// Creates a new expression that is like this one, but using the supplied children. If all of the children are the same, it will return this expression. /// </summary> /// <param name="breakLabel">The <see cref="LoopCSharpStatement.BreakLabel" /> property of the result.</param> /// <param name="continueLabel">The <see cref="LoopCSharpStatement.ContinueLabel" /> property of the result.</param> /// <param name="body">The <see cref="LoopCSharpStatement.Body" /> property of the result.</param> /// <param name="test">The <see cref="ConditionalLoopCSharpStatement.Test" /> property of the result.</param> /// <returns>This expression if no children changed, or an expression with the updated children.</returns> public DoCSharpStatement Update(LabelTarget breakLabel, LabelTarget continueLabel, Expression body, Expression test) { if (breakLabel == this.BreakLabel && continueLabel == this.ContinueLabel && body == this.Body && test == this.Test) { return(this); } return(CSharpExpression.Do(body, test, breakLabel, continueLabel)); }