Freigeben über


DebugView-Syntax (Ausdrucksstrukturen)

Die DebugView-Eigenschaft (nur beim Debuggen verfügbar) stellt ein Zeichenfolgenrendering von Ausdrucksstrukturen bereit. Die meisten Syntaxen sind recht einfach zu verstehen; die Sonderfälle werden in den folgenden Abschnitten beschrieben.

Jedes Beispiel folgt einem Kommentarblock, der die DebugView enthält.

ParameterExpression

ParameterExpression Variablennamen werden am Anfang mit einem "$"-Symbol angezeigt.

Wenn ein Parameter keinen Namen hat, wird ihm ein automatisch generierter Name zugewiesen, z $var1 . B. oder $var2.

Beispiele

Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer), "num")
'
'    $num
'

Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer))
'
'    $var1
'

ConstantExpressions

Bei ConstantExpression Objekten, die ganze Zahlen, Zeichenfolgen und nullZeichenfolgen darstellen, wird der Wert der Konstanten angezeigt.

Bei einigen numerischen Typen wird dem Wert ein Suffix hinzugefügt:

Typ Schlüsselwort Nachsilbe
System.UInt32 UInteger- U
System.Int64 Lang L
System.UInt64 ULong- UL
System.Double Double D
System.Single Single F
System.Decimal Dezimal M

Beispiele

Dim num as Integer = 10
Dim expr As ConstantExpression = Expression.Constant(num)
'
'    10
'

Dim num As Double = 10
Dim expr As ConstantExpression = Expression.Constant(num)
'
'    10D
'

BlockExpression

Wenn sich der Typ eines BlockExpression Objekts vom Typ des letzten Ausdrucks im Block unterscheidet, wird der Typ in winkeln Klammern (< und >) angezeigt. Andernfalls wird der Objekttyp BlockExpression nicht angezeigt.

Beispiele

Dim block As BlockExpression = Expression.Block(Expression.Constant("test"))
'
'    .Block() {
'        "test"
'    }
'

Dim block As BlockExpression = Expression.Block(
    GetType(Object),
    Expression.Constant("test")
)
'
'    .Block<System.Object>() {
'        "test"
'    }
'

LambdaExpression

LambdaExpression Objekte werden zusammen mit den Stellvertretungstypen angezeigt.

Wenn ein Lambda-Ausdruck keinen Namen hat, wird ihm ein automatisch generierter Name zugewiesen, z #Lambda1 . B. oder #Lambda2.

Beispiele

Dim lambda As LambdaExpression = Expression.Lambda(Of Func(Of Integer))(
    Expression.Constant(1)
)
'
'    .Lambda #Lambda1<System.Func'1[System.Int32]>() {
'        1
'    }
'

Dim lambda As LambdaExpression = Expression.Lambda(Of Func(Of Integer))(
    Expression.Constant(1),
    "SampleLambda",
    Nothing
)
'
'    .Lambda #SampleLambda<System.Func'1[System.Int32]>() {
'        1
'    }
'

LabelExpression

Wenn Sie einen Standardwert für das LabelExpression Objekt angeben, wird dieser Wert vor dem LabelTarget Objekt angezeigt.

Das .Label Token gibt den Anfang der Bezeichnung an. Das .LabelTarget-Token gibt das Ziel an, zu dem gesprungen werden soll.

Wenn eine Bezeichnung keinen Namen hat, wird ihm ein automatisch generierter Name zugewiesen, z #Label1 . B. oder #Label2.

Beispiele

Dim target As LabelTarget = Expression.Label(GetType(Integer), "SampleLabel")
Dim label1 As BlockExpression = Expression.Block(
    Expression.Goto(target, Expression.Constant(0)),
    Expression.Label(target, Expression.Constant(-1))
)
'
'    .Block() {
'        .Goto SampleLabel { 0 };
'        .Label
'            -1
'        .LabelTarget SampleLabel:
'    }
'

Dim target As LabelTarget = Expression.Label()
Dim block As BlockExpression = Expression.Block(
    Expression.Goto(target),
    Expression.Label(target)
)
'
'    .Block() {
'        .Goto #Label1 { };
'        .Label
'        .LabelTarget #Label1:
'    }
'

Überprüfte Operatoren

Markierte Operatoren werden mit dem # Symbol vor dem Operator angezeigt. Beispielsweise wird der geprüfte Additionsoperator als #+ angezeigt.

Beispiele

Dim expr As Expression = Expression.AddChecked(
    Expression.Constant(1),
    Expression.Constant(2)
)
'
'     1 #+ 2
'

Dim expr As Expression = Expression.ConvertChecked(
    Expression.Constant(10.0),
    GetType(Integer)
)
'
'    #(System.Int32)10D
'