Expression.Loop Method (Expression, LabelTarget)
.NET Framework (current version)
Creates a LoopExpression with the given body and break target.
Assembly: System.Core (in System.Core.dll)
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); Console.WriteLine(factorial); // This code example produces the following output: // // 120
Universal Windows Platform
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 4.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 4.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Show: