Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A propriedade DebugView (disponível somente durante a depuração) fornece uma renderização de cadeia de caracteres de árvores de expressão. A maior parte da sintaxe é bastante simples de entender; Os casos especiais são descritos nas secções seguintes.
Cada exemplo é seguido por um bloco de comentários contendo o DebugView.
Expressão de Parâmetros
ParameterExpression Os nomes das variáveis são exibidos com um símbolo "$" no início.
Se um parâmetro não tiver um nome, será atribuído um nome gerado automaticamente, como $var1 ou $var2.
Exemplos
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer), "num")
'
' $num
'
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer))
'
' $var1
'
ConstantExpressions
Para ConstantExpression objetos que representam valores inteiros, cadeias de caracteres e null, o valor da constante é exibido.
Para alguns tipos numéricos, um sufixo é adicionado ao valor:
| Tipo | Palavra-chave | Sufixo |
|---|---|---|
| System.UInt32 | UInteger | U |
| System.Int64 | Longo | L |
| System.UInt64 | ULong | UL |
| System.Double | `Duplo` | D |
| System.Single | Solteiro | F |
| System.Decimal | Decimal | M |
Exemplos
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 o tipo de um BlockExpression objeto for diferente do tipo da última expressão no bloco , o tipo será exibido entre colchetes angulares (< e >). Caso contrário, o tipo do BlockExpression objeto não será exibido.
Exemplos
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 Os objetos são exibidos juntamente com seus tipos de delegados.
Se uma expressão lambda não tiver um nome, será atribuído um nome gerado automaticamente, como #Lambda1 ou #Lambda2.
Exemplos
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 você especificar um valor padrão para o LabelExpression objeto, esse valor será exibido antes do LabelTarget objeto.
O .Label token indica o início do rótulo. O .LabelTarget token indica o destino para o qual saltar.
Se um rótulo não tiver um nome, será atribuído um nome gerado automaticamente, como #Label1 ou #Label2.
Exemplos
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:
' }
'
Operadores verificados
Os operadores verificados são exibidos com o # símbolo na frente do operador. Por exemplo, o operador de adição verificada é exibido como #+.
Exemplos
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
'