Прочитать на английском

Поделиться через


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);

Параметры

type
Type

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

variables
IEnumerable<ParameterExpression>

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

expressions
IEnumerable<Expression>

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

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

Созданный BlockExpression.

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

arg0
Expression

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

arg1
Expression

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

arg2
Expression

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

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

Созданный BlockExpression.

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

arg0
Expression

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

arg1
Expression

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

arg2
Expression

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

arg3
Expression

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

arg4
Expression

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

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

Созданный BlockExpression.

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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, 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);

Параметры

type
Type

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

variables
IEnumerable<ParameterExpression>

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

expressions
Expression[]

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

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

Созданный BlockExpression.

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Block(Type, Expression[])

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

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

public static System.Linq.Expressions.BlockExpression Block (Type type, params System.Linq.Expressions.Expression[] expressions);

Параметры

type
Type

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

expressions
Expression[]

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

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

Созданный BlockExpression.

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

arg0
Expression

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

arg1
Expression

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

arg2
Expression

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

arg3
Expression

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

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

Созданный BlockExpression.

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

arg0
Expression

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

arg1
Expression

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

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

Созданный BlockExpression.

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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, 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);

Параметры

variables
IEnumerable<ParameterExpression>

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

expressions
Expression[]

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

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

Созданный BlockExpression.

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

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

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Block(Expression[])

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

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

public static System.Linq.Expressions.BlockExpression Block (params System.Linq.Expressions.Expression[] expressions);

Параметры

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

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

expressions
IEnumerable<Expression>

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

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

Созданный BlockExpression.

Комментарии

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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);

Параметры

type
Type

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

expressions
IEnumerable<Expression>

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

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

Созданный BlockExpression.

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0