GotoExpression Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un saut sans condition. Cela inclut les instructions de retour, les instructions break et continue, ainsi que d’autres sauts.
public ref class GotoExpression sealed : System::Linq::Expressions::Expression
public sealed class GotoExpression : System.Linq.Expressions.Expression
type GotoExpression = class
inherit Expression
Public NotInheritable Class GotoExpression
Inherits Expression
- Héritage
Exemples
L’exemple suivant montre comment créer une expression qui contient un GotoExpression objet à l’aide de la Goto méthode.
// Add the following directive to your file:
// using System.Linq.Expressions;
// A label expression of the void type that is the target for the GotoExpression.
LabelTarget returnTarget = Expression.Label();
// This block contains a GotoExpression.
// 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("GoTo")),
Expression.Goto(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:
//
// GoTo
// "Other Work" is not printed because
// the GoTo expression transfers execution from Expression.GoTo(returnTarget)
// to Expression.Label(returnTarget).
' Add the following directive to your file:
' Imports System.Linq.Expressions
' A label expression of the void type that is the target for the GoToExpression.
Dim returnTarget As LabelTarget = Expression.Label()
' This block contains a GotoExpression.
' 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("GoTo")),
Expression.Goto(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:
'
' GoTo
' "Other Work" is not printed because
' the Return expression transfers execution from Expression.GoTo(returnTarget)
' to Expression.Label(returnTarget).
Propriétés
| Nom | Description |
|---|---|
| CanReduce |
Indique que le nœud peut être réduit à un nœud plus simple. Si cela retourne la valeur true, Reduce() peut être appelé pour produire le formulaire réduit. (Hérité de Expression) |
| Kind |
Type de l’expression « aller à ». Sert uniquement à des fins d’information. |
| NodeType |
Retourne le type de nœud de ce Expression. |
| Target |
Étiquette cible vers laquelle ce nœud passe. |
| Type |
Obtient le type statique de l’expression que cela Expression représente. |
| Value |
Valeur transmise à la cible, ou null si la cible est de type System.Void. |
Méthodes
| Nom | Description |
|---|---|
| Accept(ExpressionVisitor) |
Répartit vers la méthode de visite spécifique pour ce type de nœud. Par exemple, MethodCallExpression appelle le VisitMethodCall(MethodCallExpression). (Hérité de Expression) |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| Reduce() |
Réduit ce nœud à une expression plus simple. Si CanReduce retourne true, cela doit renvoyer une expression valide. Cette méthode peut retourner un autre nœud qui lui-même doit être réduit. (Hérité de Expression) |
| ReduceAndCheck() |
Réduit ce nœud à une expression plus simple. Si CanReduce retourne true, cela doit renvoyer une expression valide. Cette méthode peut retourner un autre nœud qui lui-même doit être réduit. (Hérité de Expression) |
| ReduceExtensions() |
Réduit l’expression à un type de nœud connu (qui n’est pas un nœud d’extension) ou retourne simplement l’expression s’il s’agit déjà d’un type connu. (Hérité de Expression) |
| ToString() |
Retourne une représentation textuelle du Expression. (Hérité de Expression) |
| Update(LabelTarget, Expression) |
Crée une expression semblable à celle-ci, mais à l’aide des enfants fournis. Si tous les enfants sont identiques, il retourne cette expression. |
| VisitChildren(ExpressionVisitor) |
Réduit le nœud, puis appelle le délégué visiteur sur l’expression réduite. La méthode lève une exception si le nœud n’est pas réductible. (Hérité de Expression) |