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

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

建立的 BlockExpression

適用於

Block(Expression, Expression, Expression)

建立包含三個運算式但沒有任何變數的 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

建立的 BlockExpression

備註

執行區塊運算式時,它會傳回區塊中最後一個運算式的值。

適用於

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

建立包含五個運算式但沒有任何變數的 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

建立的 BlockExpression

備註

執行區塊運算式時,它會傳回區塊中最後一個運算式的值。

適用於

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

建立包含指定之變數和運算式的 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

建立的 BlockExpression

適用於

Block(Type, Expression[])

建立包含指定的運算式、有指定之結果類型、但沒有任何變數的 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

建立的 BlockExpression

適用於

Block(Expression, Expression, Expression, Expression)

建立包含四個運算式但沒有任何變數的 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

建立的 BlockExpression

備註

執行區塊運算式時,它會傳回區塊中最後一個運算式的值。

適用於

Block(Expression, Expression)

建立包含兩個運算式但沒有任何變數的 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

建立的 BlockExpression

備註

執行區塊運算式時,它會傳回區塊中最後一個運算式的值。

適用於

Block(IEnumerable<ParameterExpression>, Expression[])

建立包含指定之變數和運算式的 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

建立的 BlockExpression

備註

執行區塊運算式時,它會傳回區塊中最後一個運算式的值。

適用於

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

建立包含指定之變數和運算式的 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

建立的 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

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

建立的 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

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

建立的 BlockExpression

備註

執行區塊運算式時,它會傳回區塊中最後一個運算式的值。

適用於

Block(Type, IEnumerable<Expression>)

建立包含指定的運算式、有指定之結果類型、但沒有任何變數的 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

建立的 BlockExpression

適用於