Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DebugView özelliği (yalnızca hata ayıklama sırasında kullanılabilir), ifade ağaçlarının dize işlemesini sağlar. Söz diziminin çoğunu anlamak oldukça kolaydır; özel durumlar aşağıdaki bölümlerde açıklanmıştır.
Her örneği, DebugView içeren bir açıklama bloğu izler.
Parametre İfadesi
ParameterExpression değişken adları başlangıçta "$" simgesiyle görüntülenir.
Parametrenin adı yoksa, veya $var2gibi $var1 otomatik olarak oluşturulan bir ad atanır.
Örnekler
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer), "num")
'
' $num
'
Dim numParam As ParameterExpression = Expression.Parameter(GetType(Integer))
'
' $var1
'
ConstantExpressions
Tamsayı ConstantExpression değerlerini, dizeleri ve nulldeğerlerini temsil eden nesneler için sabitin değeri görüntülenir.
Bazı sayısal türler için değere bir sonek eklenir:
| Türü | Anahtar sözcük | Sonek |
|---|---|---|
| System.UInt32 | UInteger | U |
| System.Int64 | Long | L |
| System.UInt64 | ULong | UL |
| System.Double | Çift | D |
| System.Single | Tek | F |
| System.Decimal | Ondalık | M |
Örnekler
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
Nesnenin BlockExpression türü bloktaki son ifadenin türünden farklıysa, tür köşeli ayraçlar (< ve >) içinde görüntülenir. Aksi takdirde, nesnenin BlockExpression türü görüntülenmez.
Örnekler
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 nesneleri, temsilci türleriyle birlikte görüntülenir.
Lambda ifadesinin adı yoksa, veya #Lambda2gibi #Lambda1 otomatik olarak oluşturulan bir ad atanır.
Örnekler
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
Nesne için LabelExpression varsayılan bir değer belirtirseniz, bu değer nesneden LabelTarget önce görüntülenir.
Belirteç, .Label etiketin başlangıcını gösterir. Belirteç .LabelTarget , atlaması gereken hedefin hedefini gösterir.
Bir etiketin adı yoksa, veya #Label2gibi #Label1 otomatik olarak oluşturulan bir ad atanır.
Örnekler
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:
' }
'
Denetimli İşleçler
İşaretlenen işleçler işlecin önünde simgesiyle # birlikte görüntülenir. Örneğin, denetlenen ekleme işleci olarak #+ görüntülenir.
Örnekler
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
'