BlockExpression Classe

Definição

Representa um bloco que contém uma sequência de expressões onde variáveis podem ser definidas.

public ref class BlockExpression : System::Linq::Expressions::Expression
public class BlockExpression : System.Linq.Expressions.Expression
type BlockExpression = class
    inherit Expression
Public Class BlockExpression
Inherits Expression
Herança
BlockExpression

Exemplos

O exemplo de código seguinte mostra como criar uma expressão de bloco. A expressão do bloco consiste em dois MethodCallExpression objetos e um ConstantExpression objeto.

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

// The block expression allows for executing several expressions sequentually.
// When the block expression is executed,
// it returns the value of the last expression in the sequence.
BlockExpression blockExpr = Expression.Block(
    Expression.Call(
        null,
        typeof(Console).GetMethod("Write", new Type[] { typeof(String) }),
        Expression.Constant("Hello ")
       ),
    Expression.Call(
        null,
        typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),
        Expression.Constant("World!")
        ),
    Expression.Constant(42)
);

Console.WriteLine("The result of executing the expression tree:");
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
var result = Expression.Lambda<Func<int>>(blockExpr).Compile()();

// Print out the expressions from the block expression.
Console.WriteLine("The expressions from the block expression:");
foreach (var expr in blockExpr.Expressions)
    Console.WriteLine(expr.ToString());

// Print out the result of the tree execution.
Console.WriteLine("The return value of the block expression:");
Console.WriteLine(result);

// This code example produces the following output:
//
// The result of executing the expression tree:
// Hello World!

// The expressions from the block expression:
// Write("Hello ")
// WriteLine("World!")
// 42

// The return value of the block expression:
// 42
' Add the following directive to your file:
' Imports System.Linq.Expressions

' The block expression enables you to execute several expressions sequentually.
' When the block expression is executed,
' it returns the value of the last expression in the sequence.
Dim blockExpr As BlockExpression = Expression.Block(
    Expression.Call(
        Nothing,
        GetType(Console).GetMethod("Write", New Type() {GetType(String)}),
        Expression.Constant("Hello ")
       ),
    Expression.Call(
        Nothing,
        GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}),
        Expression.Constant("World!")
        ),
    Expression.Constant(42)
)

Console.WriteLine("The result of executing the expression tree:")
' The following statement first creates an expression tree,
' then compiles it, and then executes it.           
Dim result = Expression.Lambda(Of Func(Of Integer))(blockExpr).Compile()()

' Print the expressions from the block expression.
Console.WriteLine("The expressions from the block expression:")
For Each expr In blockExpr.Expressions
    Console.WriteLine(expr.ToString())
Next

' Print the result of the tree execution.
Console.WriteLine("The return value of the block expression:")
Console.WriteLine(result)

' This code example produces the following output:
'
' The result of executing the expression tree:
' Hello World!

' The expressions from the block expression:
' Write("Hello ")
' WriteLine("World!")
' 42

' The return value of the block expression:
' 42

Observações

Os Block métodos podem ser usados para criar um BlockExpression.

Propriedades

Name Description
CanReduce

Indica que o nó pode ser reduzido a um nó mais simples. Se isto devolver verdadeiro, Reduce() pode ser chamado para produzir a forma reduzida.

(Herdado de Expression)
Expressions

Recebe as expressões deste bloco.

NodeType

Devolve o tipo de nó desta expressão. Os nós de extensão devem regressar Extension ao sobrepor este método.

Result

Tem a última expressão neste bloco.

Type

Obtém o tipo estático da expressão que isto Expression representa.

Variables

Obtém as variáveis definidas neste bloco.

Métodos

Name Description
Accept(ExpressionVisitor)

Despacha para o método de visita específico para este tipo de nó. Por exemplo, MethodCallExpression chama o VisitMethodCall(MethodCallExpression).

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Reduce()

Reduz este nó a uma expressão mais simples. Se o CanReduce devolver verdadeiro, isto deverá devolver uma expressão válida. Este método pode devolver outro nó que, por sua vez, deve ser reduzido.

(Herdado de Expression)
ReduceAndCheck()

Reduz este nó a uma expressão mais simples. Se o CanReduce devolver verdadeiro, isto deverá devolver uma expressão válida. Este método pode devolver outro nó que, por sua vez, deve ser reduzido.

(Herdado de Expression)
ReduceExtensions()

Reduz a expressão para um tipo de nó conhecido (que não é um nó de Extensão) ou simplesmente devolve a expressão se já for um tipo conhecido.

(Herdado de Expression)
ToString()

Devolve uma representação textual do Expression.

(Herdado de Expression)
Update(IEnumerable<ParameterExpression>, IEnumerable<Expression>)

Cria uma nova expressão semelhante a esta, mas usando os filhos fornecidos. Se todas as crianças forem iguais, ela devolverá essa expressão.

VisitChildren(ExpressionVisitor)

Reduz o nó e depois chama o delegado visitante na expressão reduzida. O método lança uma exceção se o nó não for redutível.

(Herdado de Expression)

Aplica-se a