Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Loop Method (Expression, LabelTarget)

Expression.Loop Method (Expression, LabelTarget)

Creates a LoopExpression with the given body and break target.

Namespace:  System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

public static LoopExpression Loop(
	Expression body,
	LabelTarget break
)

Parameters

body
Type: System.Linq.Expressions.Expression
The body of the loop.
break
Type: System.Linq.Expressions.LabelTarget
The break target used by the loop body.

The following example demonstrates how to create a block expression that contains a LoopExpression object.


// Add the following directive to the file:
// using System.Linq.Expressions;  

// Creating a parameter expression.
ParameterExpression value = Expression.Parameter(typeof(int), "value");

// Creating an expression to hold a local variable. 
ParameterExpression result = Expression.Parameter(typeof(int), "result");

// Creating a label to jump to from a loop.
LabelTarget label = Expression.Label(typeof(int));

// Creating a method body.
BlockExpression block = Expression.Block(
    new[] { result },
    Expression.Assign(result, Expression.Constant(1)),
        Expression.Loop(
           Expression.IfThenElse(
               Expression.GreaterThan(value, Expression.Constant(1)),
               Expression.MultiplyAssign(result,
                   Expression.PostDecrementAssign(value)),
               Expression.Break(label, result)
           ),
       label
    )
);

// Compile and run an expression tree.
int factorial = Expression.Lambda<Func<int, int>>(block, value).Compile()(5);

outputBlock.Text += factorial + "\n";

// This code example produces the following output:
//
// 120


Silverlight

Supported in: 5, 4

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show:
© 2015 Microsoft