Expression.Block Method (IEnumerable<ParameterExpression>, IEnumerable<Expression>)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Creates a BlockExpression that contains the given variables and expressions.
Assembly: System.Core (in System.Core.dll)
public static BlockExpression Block( IEnumerable<ParameterExpression> variables, IEnumerable<Expression> expressions )
Parameters
- variables
- Type: System.Collections.Generic.IEnumerable<ParameterExpression>
The variables in the block.
- expressions
- Type: System.Collections.Generic.IEnumerable<Expression>
The expressions in the block.
The following code example shows how to pass a parameter to a block expression and process this parameter within a block.
// Add the following directive to your file:
// using System.Linq.Expressions;
// This block has a parameter expression
// that represents a variable within the block scope.
// It assigns a value to the variable,
// and then adds a constant to the assigned value.
ParameterExpression varExpr = Expression.Variable(typeof(int), "sampleVar");
BlockExpression blockExpr = Expression.Block(
new ParameterExpression[] { varExpr },
Expression.Assign(varExpr, Expression.Constant(1)),
Expression.Add(varExpr, Expression.Constant(5))
);
// Print out the expressions from the block expression.
outputBlock.Text += "The expressions from the block expression:" + "\n";
foreach (var expr in blockExpr.Expressions)
outputBlock.Text += expr.ToString() + "\n";
outputBlock.Text += "The result of executing the expression tree:" + "\n";
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
outputBlock.Text +=
Expression.Lambda<Func<int>>(blockExpr).Compile()() + "\n";
// This code example produces the following output:
// The expressions from the block expression:
// (sampleVar = 1)
// (sampleVar + 5)
// The result of executing the expression tree:
// 6
Show: