Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Właściwość DebugView (dostępna tylko podczas debugowania) udostępnia renderowanie ciągów drzew wyrażeń. Większość składni jest dość prosta do zrozumienia; w poniższych sekcjach opisano przypadki specjalne.
Po każdym przykładzie następuje blok komentarza zawierający widok DebugView.
ParametrWyrażenie
ParameterExpression Nazwy zmiennych są wyświetlane z symbolem "$" na początku.
Jeśli parametr nie ma nazwy, zostanie przypisana automatycznie wygenerowana nazwa, na przykład $var1 lub $var2.
Przykłady
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer), "num")
'
' $num
'
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer))
'
' $var1
'
ConstantExpressions
W przypadku ConstantExpression obiektów reprezentujących wartości całkowite, ciągi i null, wyświetlana jest wartość stałej.
W przypadku niektórych typów liczb sufiks jest dodawany do wartości:
| Typ | Słowo kluczowe | Sufiks |
|---|---|---|
| System.UInt32 | liczba całkowita UInteger | U |
| System.Int64 | Długi | L |
| System.UInt64 | ULong | UL |
| System.Double | Podwójne | D |
| System.Single | Pojedynczy | F |
| System.Decimal | dziesiętny | M |
Przykłady
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
Jeśli typ BlockExpression obiektu różni się od typu ostatniego wyrażenia w bloku, typ jest wyświetlany w nawiasach kątowych (< i >). W przeciwnym razie typ BlockExpression obiektu nie jest wyświetlany.
Przykłady
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 obiekty są wyświetlane razem z ich typami delegatów.
Jeśli wyrażenie lambda nie ma nazwy, zostanie przypisana automatycznie wygenerowana nazwa, na przykład #Lambda1 lub #Lambda2.
Przykłady
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
Jeśli określisz wartość domyślną dla LabelExpression obiektu, ta wartość zostanie wyświetlona przed obiektem LabelTarget .
Token .Label wskazuje początek etykiety. Token .LabelTarget wskazuje miejsce docelowe, do którego ma przejść.
Jeśli etykieta nie ma nazwy, jest przypisana automatycznie wygenerowana nazwa, na przykład #Label1 lub #Label2.
Przykłady
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:
' }
'
Sprawdzone operatory
Zaznaczeni operatorzy są wyświetlani z znakiem # przed operatorem. Na przykład sprawdzony operator dodawania jest wyświetlany jako #+.
Przykłady
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
'