GotoExpression Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Represents an unconditional jump. This includes return statements, break and continue statements, and other jumps.
Assembly: System.Core (in System.Core.dll)
The GotoExpression type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | CanReduce | Indicates that the node can be reduced to a simpler node. If this returns true, Reduce() can be called to produce the reduced form. (Inherited from Expression.) |
![]() | Kind | The kind of the "go to" expression. Serves information purposes only. |
![]() | NodeType | Returns the node type of this Expression. (Overrides Expression.NodeType.) |
![]() | Target | The target label where this node jumps to. |
![]() | Type | Gets the static type of the expression that this Expression represents. (Overrides Expression.Type.) |
![]() | Value | The value passed to the target, or null if the target is of type System.Void. |
| Name | Description | |
|---|---|---|
![]() | Accept | Dispatches to the specific visit method for this node type. For example, MethodCallExpression calls the VisitMethodCall. (Inherited from Expression.) |
![]() | Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | Reduce | Reduces this node to a simpler expression. If CanReduce returns true, this should return a valid expression. This method can return another node which itself must be reduced. (Inherited from Expression.) |
![]() | ReduceAndCheck | Reduces this node to a simpler expression. If CanReduce returns true, this should return a valid expression. This method can return another node which itself must be reduced. (Inherited from Expression.) |
![]() | ReduceExtensions | Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type. (Inherited from Expression.) |
![]() | ToString | Returns a textual representation of the Expression. (Inherited from Expression.) |
![]() | Update | Creates a new expression that is like this one, but using the supplied children. If all of the children are the same, it will return this expression. |
![]() | VisitChildren | Reduces the node and then calls the visitor delegate on the reduced expression. The method throws an exception if the node is not reducible. (Inherited from Expression.) |
The following example demonstrates how to create an expression that contains a GotoExpression object by using the Goto method.
' 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).
Show:


