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
'
ConstantExpressions
整数値、文字列、およびConstantExpressionを表すnullオブジェクトの場合、定数の値が表示されます。
一部の数値型では、サフィックスが値に追加されます。
| タイプ | キーワード | 敬称 |
|---|---|---|
| System.UInt32 | UInteger を する | ユー |
| System.Int64 | 長い | L |
| System.UInt64 | ULong を する | UL規格 |
| System.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 オブジェクトはデリゲート型と共に表示されます。
ラムダ式に名前がない場合は、自動的に生成された名前 ( #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:
' }
'
checked 演算子
チェックされた演算子は、演算子の前に # 記号と共に表示されます。 たとえば、チェックされた加算演算子は #+として表示されます。
例示
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
'
.NET