Expression.Block Метод

Определение

Создает объект BlockExpression.

Перегрузки

Block(Type, IEnumerable<ParameterExpression>, IEnumerable<Expression>)

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

Block(Expression, Expression, Expression)

Создает выражение BlockExpression, содержащее три выражения и не содержащее переменных.

Block(Expression, Expression, Expression, Expression, Expression)

Создает выражение BlockExpression, содержащее пять выражений и не содержащее переменных.

Block(Type, IEnumerable<ParameterExpression>, Expression[])

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

Block(Type, Expression[])

Создает выражение BlockExpression, содержащее данные выражения, не содержащее переменных и имеющее конкретный тип результатов.

Block(Expression, Expression, Expression, Expression)

Создает выражение BlockExpression, содержащее четыре выражения и не содержащее переменных.

Block(Expression, Expression)

Создает выражение BlockExpression, содержащее два выражения и не содержащее переменных.

Block(IEnumerable<ParameterExpression>, Expression[])

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

Block(IEnumerable<ParameterExpression>, IEnumerable<Expression>)

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

Block(Expression[])

Создает объект BlockExpression, содержащий заданные выражения и не содержащий переменных.

Block(IEnumerable<Expression>)

Создает объект BlockExpression, содержащий заданные выражения и не содержащий переменных.

Block(Type, IEnumerable<Expression>)

Создает выражение BlockExpression, содержащее данные выражения, не содержащее переменных и имеющее конкретный тип результатов.

Block(Type, IEnumerable<ParameterExpression>, IEnumerable<Expression>)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(Type ^ type, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ variables, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (Type type, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> variables, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> expressions);
public static System.Linq.Expressions.BlockExpression Block (Type type, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? variables, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> expressions);
static member Block : Type * seq<System.Linq.Expressions.ParameterExpression> * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (type As Type, variables As IEnumerable(Of ParameterExpression), expressions As IEnumerable(Of Expression)) As BlockExpression

Параметры

type
Type

Тип результата блока.

variables
IEnumerable<ParameterExpression>

Переменные в блоке.

expressions
IEnumerable<Expression>

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Применяется к

Block(Expression, Expression, Expression)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее три выражения и не содержащее переменных.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2);
public static System.Linq.Expressions.BlockExpression Block (System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2);
static member Block : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (arg0 As Expression, arg1 As Expression, arg2 As Expression) As BlockExpression

Параметры

arg0
Expression

Первое выражение в блоке.

arg1
Expression

Второе выражение в блоке.

arg2
Expression

Третье выражение в блоке.

Возвращаемое значение

Созданный BlockExpression.

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(Expression, Expression, Expression, Expression, Expression)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее пять выражений и не содержащее переменных.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2, System::Linq::Expressions::Expression ^ arg3, System::Linq::Expressions::Expression ^ arg4);
public static System.Linq.Expressions.BlockExpression Block (System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2, System.Linq.Expressions.Expression arg3, System.Linq.Expressions.Expression arg4);
static member Block : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (arg0 As Expression, arg1 As Expression, arg2 As Expression, arg3 As Expression, arg4 As Expression) As BlockExpression

Параметры

arg0
Expression

Первое выражение в блоке.

arg1
Expression

Второе выражение в блоке.

arg2
Expression

Третье выражение в блоке.

arg3
Expression

Четвертое выражение в блоке.

arg4
Expression

Пятое выражение в блоке.

Возвращаемое значение

Созданный BlockExpression.

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(Type, IEnumerable<ParameterExpression>, Expression[])

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(Type ^ type, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ variables, ... cli::array <System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (Type type, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> variables, params System.Linq.Expressions.Expression[] expressions);
public static System.Linq.Expressions.BlockExpression Block (Type type, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? variables, params System.Linq.Expressions.Expression[] expressions);
static member Block : Type * seq<System.Linq.Expressions.ParameterExpression> * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (type As Type, variables As IEnumerable(Of ParameterExpression), ParamArray expressions As Expression()) As BlockExpression

Параметры

type
Type

Тип результата блока.

variables
IEnumerable<ParameterExpression>

Переменные в блоке.

expressions
Expression[]

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Применяется к

Block(Type, Expression[])

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее данные выражения, не содержащее переменных и имеющее конкретный тип результатов.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(Type ^ type, ... cli::array <System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (Type type, params System.Linq.Expressions.Expression[] expressions);
static member Block : Type * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (type As Type, ParamArray expressions As Expression()) As BlockExpression

Параметры

type
Type

Тип результата блока.

expressions
Expression[]

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Применяется к

Block(Expression, Expression, Expression, Expression)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее четыре выражения и не содержащее переменных.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2, System::Linq::Expressions::Expression ^ arg3);
public static System.Linq.Expressions.BlockExpression Block (System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2, System.Linq.Expressions.Expression arg3);
static member Block : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (arg0 As Expression, arg1 As Expression, arg2 As Expression, arg3 As Expression) As BlockExpression

Параметры

arg0
Expression

Первое выражение в блоке.

arg1
Expression

Второе выражение в блоке.

arg2
Expression

Третье выражение в блоке.

arg3
Expression

Четвертое выражение в блоке.

Возвращаемое значение

Созданный BlockExpression.

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(Expression, Expression)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее два выражения и не содержащее переменных.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1);
public static System.Linq.Expressions.BlockExpression Block (System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1);
static member Block : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (arg0 As Expression, arg1 As Expression) As BlockExpression

Параметры

arg0
Expression

Первое выражение в блоке.

arg1
Expression

Второе выражение в блоке.

Возвращаемое значение

Созданный BlockExpression.

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(IEnumerable<ParameterExpression>, Expression[])

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ variables, ... cli::array <System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> variables, params System.Linq.Expressions.Expression[] expressions);
public static System.Linq.Expressions.BlockExpression Block (System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? variables, params System.Linq.Expressions.Expression[] expressions);
static member Block : seq<System.Linq.Expressions.ParameterExpression> * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (variables As IEnumerable(Of ParameterExpression), ParamArray expressions As Expression()) As BlockExpression

Параметры

variables
IEnumerable<ParameterExpression>

Переменные в блоке.

expressions
Expression[]

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(IEnumerable<ParameterExpression>, IEnumerable<Expression>)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее указанные переменные и выражения.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ variables, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> variables, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> expressions);
public static System.Linq.Expressions.BlockExpression Block (System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? variables, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> expressions);
static member Block : seq<System.Linq.Expressions.ParameterExpression> * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (variables As IEnumerable(Of ParameterExpression), expressions As IEnumerable(Of Expression)) As BlockExpression

Параметры

variables
IEnumerable<ParameterExpression>

Переменные в блоке.

expressions
IEnumerable<Expression>

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Примеры

В следующем примере кода показано, как передать параметр в выражение блока и обработать этот параметр в блоке.

// 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.
Console.WriteLine("The expressions from the block expression:");
foreach (var expr in blockExpr.Expressions)
    Console.WriteLine(expr.ToString());

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

// 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
' Add the following directive to your file:
' Imports 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. 

Dim varExpr As ParameterExpression = Expression.Variable(GetType(Integer), "sampleVar")
Dim blockExpr As BlockExpression = Expression.Block(
    New ParameterExpression() {varExpr},
    Expression.Assign(varExpr, Expression.Constant(1)),
    Expression.Add(varExpr, Expression.Constant(5))
)

' 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

Console.WriteLine("The result of executing the expression tree:")

' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda(Of Func(Of Integer))(blockExpr).Compile()())

' 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

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(Expression[])

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает объект BlockExpression, содержащий заданные выражения и не содержащий переменных.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(... cli::array <System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (params System.Linq.Expressions.Expression[] expressions);
static member Block : System.Linq.Expressions.Expression[] -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (ParamArray expressions As Expression()) As BlockExpression

Параметры

expressions
Expression[]

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Примеры

В следующем примере кода показано, как создать выражение блока. Выражение блока состоит из двух MethodCallExpression объектов и одного ConstantExpression объекта .

// 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

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(IEnumerable<Expression>)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает объект BlockExpression, содержащий заданные выражения и не содержащий переменных.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> expressions);
static member Block : seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (expressions As IEnumerable(Of Expression)) As BlockExpression

Параметры

expressions
IEnumerable<Expression>

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Комментарии

При выполнении выражения блока возвращается значение последнего выражения в блоке.

Применяется к

Block(Type, IEnumerable<Expression>)

Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs
Исходный код:
BlockExpression.cs

Создает выражение BlockExpression, содержащее данные выражения, не содержащее переменных и имеющее конкретный тип результатов.

public:
 static System::Linq::Expressions::BlockExpression ^ Block(Type ^ type, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ expressions);
public static System.Linq.Expressions.BlockExpression Block (Type type, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> expressions);
static member Block : Type * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.BlockExpression
Public Shared Function Block (type As Type, expressions As IEnumerable(Of Expression)) As BlockExpression

Параметры

type
Type

Тип результата блока.

expressions
IEnumerable<Expression>

Выражения в блоке.

Возвращаемое значение

Созданный BlockExpression.

Применяется к