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
對於代表整數值、字串和 null
的 ConstantExpression 物件,會顯示常數的值。
對於某些數字型別,會在值中新增尾碼:
類型 | 關鍵字 | 尾碼 |
---|---|---|
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
'