Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La proprietà DebugView (disponibile solo durante il debug) fornisce un rendering di stringhe degli alberi delle espressioni. La maggior parte della sintassi è piuttosto semplice da comprendere; I casi speciali sono descritti nelle sezioni seguenti.
Ogni esempio è seguito da un blocco di commenti contenente DebugView.
ParameterExpression
ParameterExpression I nomi delle variabili vengono visualizzati con un simbolo "$" all'inizio.
Se un parametro non ha un nome, viene assegnato un nome generato automaticamente, ad esempio $var1 o $var2.
Esempi
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer), "num")
'
' $num
'
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer))
'
' $var1
'
ConstantExpressions
Per ConstantExpression gli oggetti che rappresentano valori interi, stringhe e null, viene visualizzato il valore della costante .
Per alcuni tipi numerici, viene aggiunto un suffisso al valore :
| TIPO | Parola chiave | Suffisso |
|---|---|---|
| System.UInt32 | UInteger | U |
| System.Int64 | lungo | L |
| System.UInt64 | ULong | UL |
| System.Double | Double | D |
| System.Single | Singolo | F |
| System.Decimal | Decimale | M |
Esempi
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
Se il tipo di un BlockExpression oggetto è diverso dal tipo dell'ultima espressione nel blocco, il tipo viene visualizzato tra parentesi angolari (< e >). In caso contrario, il tipo dell'oggetto BlockExpression non viene visualizzato.
Esempi
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 gli oggetti vengono visualizzati insieme ai relativi tipi delegati.
Se un'espressione lambda non ha un nome, viene assegnato un nome generato automaticamente, ad esempio #Lambda1 o #Lambda2.
Esempi
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
Se si specifica un valore predefinito per l'oggetto LabelExpression , questo valore viene visualizzato prima dell'oggetto LabelTarget .
Il .Label token indica l'inizio dell'etichetta. Il .LabelTarget token indica la destinazione verso cui saltare.
Se un'etichetta non ha un nome, viene assegnato un nome generato automaticamente, ad esempio #Label1 o #Label2.
Esempi
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:
' }
'
Operatori controllati
Gli operatori controllati vengono visualizzati con il # simbolo davanti all'operatore . Ad esempio, l'operatore di addizione controllato viene visualizzato come #+.
Esempi
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
'