LabelTarget 類別
定義
用來表示 GotoExpression 的目標。Used to represent the target of a GotoExpression.
public ref class LabelTarget sealed
public sealed class LabelTarget
type LabelTarget = class
Public NotInheritable Class LabelTarget
- 繼承
-
LabelTarget
範例
下列範例示範如何使用方法建立包含物件的運算式 LabelTarget Label 。The following example demonstrates how to create an expression that contains a LabelTarget object by using the Label method.
// Add the following directive to the file:
// using System.Linq.Expressions;
// A label expression of the void type that is the target for Expression.Return().
LabelTarget returnTarget = Expression.Label();
// This block contains a GotoExpression that represents a return statement with no value.
// It transfers execution to a label expression that is initialized with the same LabelTarget as the GotoExpression.
// The types of the GotoExpression, label expression, and LabelTarget must match.
BlockExpression blockExpr =
Expression.Block(
Expression.Call(typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }), Expression.Constant("Return")),
Expression.Return(returnTarget),
Expression.Call(typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }), Expression.Constant("Other Work")),
Expression.Label(returnTarget)
);
// The following statement first creates an expression tree,
// then compiles it, and then runs it.
Expression.Lambda<Action>(blockExpr).Compile()();
// This code example produces the following output:
//
// Return
// "Other Work" is not printed because
// the Return expression transfers execution from Expression.Return(returnTarget)
// to Expression.Label(returnTarget).
' Add the following directive to the file:
' Imports System.Linq.Expressions
' A label expression of the void type that is the target for Expression.Return().
Dim returnTarget As LabelTarget = Expression.Label()
' This block contains a GotoExpression that represents a return statement with no value.
' It transfers execution to a label expression that is initialized with the same LabelTarget as the GotoExpression.
' The types of the GotoExpression, label expression, and LabelTarget must match.
Dim blockExpr As BlockExpression =
Expression.Block(
Expression.Call(GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}), Expression.Constant("Return")),
Expression.Return(returnTarget),
Expression.Call(GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}), Expression.Constant("Other Work")),
Expression.Label(returnTarget)
)
' The following statement first creates an expression tree,
' then compiles it, and then runs it.
Expression.Lambda(Of Action)(blockExpr).Compile()()
' This code example produces the following output:
'
' Return
' "Other Work" is not printed because
' the Return expression transfers execution from Return(returnTarget)
' to Expression.Label(returnTarget).
屬性
Name |
取得標籤的名稱。Gets the name of the label. |
Type |
跳至標籤時所傳遞值的型別 (如果不應傳遞任何值則為 Void)。The type of value that is passed when jumping to the label (or Void if no value should be passed). |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。Determines whether the specified object is equal to the current object. (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。Serves as the default hash function. (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。Gets the Type of the current instance. (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。Creates a shallow copy of the current Object. (繼承來源 Object) |
ToString() |
傳回代表目前 Object 的 String。Returns a String that represents the current Object. |