Expression.Continue 方法

定义

创建一个表示 continue 语句的 GotoExpression

重载

Continue(LabelTarget)

创建一个表示 continue 语句的 GotoExpression

Continue(LabelTarget, Type)

创建一个表示具有指定类型的 continue 语句的 GotoExpression

Continue(LabelTarget)

Source:
GotoExpression.cs
Source:
GotoExpression.cs
Source:
GotoExpression.cs

创建一个表示 continue 语句的 GotoExpression

public:
 static System::Linq::Expressions::GotoExpression ^ Continue(System::Linq::Expressions::LabelTarget ^ target);
public static System.Linq.Expressions.GotoExpression Continue (System.Linq.Expressions.LabelTarget target);
static member Continue : System.Linq.Expressions.LabelTarget -> System.Linq.Expressions.GotoExpression
Public Shared Function Continue (target As LabelTarget) As GotoExpression

参数

target
LabelTarget

LabelTarget 将跳至的 GotoExpression

返回

一个 GotoExpression,其 Kind 等于 Continue,其 Target 属性设置为 target,此外还有一个在跳转时将传递给目标标签的 null 值。

示例

以下示例演示如何创建使用 Continue 方法的循环表达式。

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

// A label that is used by a break statement and a loop.
LabelTarget breakLabel = Expression.Label();

// A label that is used by the Continue statement and the loop it refers to.
LabelTarget continueLabel = Expression.Label();

// This expression represents a Continue statement.
Expression continueExpr = Expression.Continue(continueLabel);

// A variable that triggers the exit from the loop.
ParameterExpression count = Expression.Parameter(typeof(int));

// A loop statement.
Expression loopExpr = Expression.Loop(
    Expression.Block(
        Expression.IfThen(
            Expression.GreaterThan(count, Expression.Constant(3)),
            Expression.Break(breakLabel)
        ),
        Expression.PreIncrementAssign(count),
        Expression.Call(
                    null,
                    typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),
                    Expression.Constant("Loop")
                ),
        continueExpr,
        Expression.PreDecrementAssign(count)
    ),
    breakLabel,
    continueLabel
);

// The following statement first creates an expression tree,
// then compiles it, and then runs it.
// Without the Continue statement, the loop would go on forever.
Expression.Lambda<Action<int>>(loopExpr, count).Compile()(1);

// This code example produces the following output:
//
// Loop
// Loop
// Loop
' Add the following directive to your file:
' Imports System.Linq.Expressions  

' A label that is used by a break statement and a loop. 
Dim breakLabel As LabelTarget = Expression.Label()

' A label that is used by the Continue statement and the loop it refers to.
Dim continueLabel As LabelTarget = Expression.Label()

' This expression represents a Continue statement.
Dim continueExpr As Expression = Expression.Continue(continueLabel)

' A variable that triggers the exit from the loop.
Dim count As ParameterExpression = Expression.Parameter(GetType(Integer))

' A loop statement.
Dim loopExpr As Expression = Expression.Loop(
       Expression.Block(
           Expression.IfThen(
               Expression.GreaterThan(count, Expression.Constant(3)),
               Expression.Break(breakLabel)
           ),
           Expression.PreIncrementAssign(count),
           Expression.Call(
                       Nothing,
                       GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}),
                       Expression.Constant("Loop")
                   ),
           continueExpr,
           Expression.PreDecrementAssign(count)
       ),
       breakLabel,
       continueLabel
   )

' The following statement first creates an expression tree,
' then compiles it, and then runs it.
' Without the Continue statement, the loop would go on forever.
Expression.Lambda(Of Action(Of Integer))(loopExpr, count).Compile()(1)

' This code example produces the following output:
'
' Loop
' Loop
' Loop

适用于

Continue(LabelTarget, Type)

Source:
GotoExpression.cs
Source:
GotoExpression.cs
Source:
GotoExpression.cs

创建一个表示具有指定类型的 continue 语句的 GotoExpression

public:
 static System::Linq::Expressions::GotoExpression ^ Continue(System::Linq::Expressions::LabelTarget ^ target, Type ^ type);
public static System.Linq.Expressions.GotoExpression Continue (System.Linq.Expressions.LabelTarget target, Type type);
static member Continue : System.Linq.Expressions.LabelTarget * Type -> System.Linq.Expressions.GotoExpression
Public Shared Function Continue (target As LabelTarget, type As Type) As GotoExpression

参数

target
LabelTarget

LabelTarget 将跳至的 GotoExpression

type
Type

要将 Type 属性设置为与其相等的 Type

返回

一个 GotoExpression,其 Kind 等于 Continue,其 Target 属性设置为 target,并且其 Type 属性设置为 type,此外还有一个在跳转时将传递给目标标签的 null 值。

适用于