共用方式為


DebugView 語法 (運算式樹狀架構)

DebugView 屬性 (僅可於偵錯時使用) 提供運算式樹狀架構的字串呈現。 此語法大部分皆相當容易了解;其特殊案例已於下列各節中描述。

每個範例後面都會有註解區塊,其中包含 DebugView

ParameterExpression

顯示 ParameterExpression 變數名稱時,其開頭會加上 "$" 符號。

如果參數沒有名稱,會指派自動產生的名稱給它,例如 $var1$var2

範例

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

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

ConstantExpression

對於代表整數值、字串和 nullConstantExpression 物件,會顯示常數的值。

對於某些數字型別,會在值中新增尾碼:

類型 關鍵字 尾碼
System.UInt32 UInteger U
System.Int64 Long L
System.UInt64 ULong UL
System.Double Double D
System.Single Single F
System.Decimal 十進位

範例

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

如果 BlockExpression 物件的類型與區塊中最後一個運算式的類型不同,該類型會顯示於角括弧 (<>) 之內。 否則,不會顯示 BlockExpression 物件的類型。

範例

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 物件會與其委派類型一起顯示。

如果 Lambda 運算式沒有名稱,會指派自動產生的名稱給它,例如 #Lambda1#Lambda2

範例

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

如果您指定 LabelExpression 物件的預設值,這個值會顯示在 LabelTarget 物件之前。

.Label 語彙基元表示標籤的開頭。 .LabelTarget 語彙基元表示要跳至的目標目的地。

如果標籤沒有名稱,會指派自動產生的名稱給它,例如 #Label1#Label2

範例

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:
'    }
'

檢查的運算子

顯示檢查的運算子時,運算子前面會有 # 符號。 例如,已檢查的加法運算子會顯示為 #+

範例

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
'