Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Properti DebugView (hanya tersedia saat debugging) menyediakan representasi string dari pohon ekspresi. Sebagian besar sintaksis cukup mudah dipahami; kasus khusus dijelaskan di bagian berikut.
Setiap contoh diikuti oleh komentar blok, yang berisi DebugView.
ParameterExpression
ParameterExpression nama variabel ditampilkan dengan $ simbol di awal.
Jika parameter tidak memiliki nama, parameter akan diberi nama yang dibuat secara otomatis, seperti $var1 atau $var2.
ParameterExpression numParam = Expression.Parameter(typeof(int), "num");
/*
$num
*/
ParameterExpression numParam = Expression.Parameter(typeof(int));
/*
$var1
*/
ConstantExpression
Untuk ConstantExpression objek yang mewakili nilai bilangan bulat, string, dan null, nilai konstanta ditampilkan.
Untuk jenis numerik yang memiliki akhiran standar sebagai literal C#, akhiran ditambahkan ke nilai . Tabel berikut ini memperlihatkan akhiran yang terkait dengan berbagai jenis numerik.
| Tipe | Kata kunci | Akhiran |
|---|---|---|
| System.UInt32 | uint | Universitas |
| System.Int64 | panjang | L |
| System.UInt64 | ulong | UL |
| System.Double | ganda | D |
| System.Single | mengapung | F |
| System.Decimal | desimal | M |
int num = 10;
ConstantExpression expr = Expression.Constant(num);
/*
10
*/
double num = 10;
ConstantExpression expr = Expression.Constant(num);
/*
10D
*/
BlockExpression
Jika jenis BlockExpression objek berbeda dari jenis ekspresi terakhir di blok, jenis ditampilkan dalam tanda kurung sudut (< dan >). Jika tidak, jenis BlockExpression objek tidak ditampilkan.
BlockExpression block = Expression.Block(Expression.Constant("test"));
/*
.Block() {
"test"
}
*/
BlockExpression block = Expression.Block(typeof(Object), Expression.Constant("test"));
/*
.Block<System.Object>() {
"test"
}
*/
LambdaExpression
LambdaExpression objek ditampilkan bersama dengan tipe delegasi mereka.
Jika ekspresi lambda tidak memiliki nama, ekspresi tersebut diberi nama yang dihasilkan secara otomatis, seperti #Lambda1 atau #Lambda2.
LambdaExpression lambda = Expression.Lambda<Func<int>>(Expression.Constant(1));
/*
.Lambda #Lambda1<System.Func'1[System.Int32]>() {
1
}
*/
LambdaExpression lambda = Expression.Lambda<Func<int>>(Expression.Constant(1), "SampleLambda", null);
/*
.Lambda #SampleLambda<System.Func'1[System.Int32]>() {
1
}
*/
LabelExpression
Jika Anda menentukan nilai default untuk LabelExpression objek, nilai ini ditampilkan sebelum LabelTarget objek.
Token .Label menunjukkan awal label. Token .LabelTarget menunjukkan tujuan target untuk melompat.
Jika label tidak memiliki nama, label diberi nama yang dibuat secara otomatis, seperti #Label1 atau #Label2.
LabelTarget target = Expression.Label(typeof(int), "SampleLabel");
BlockExpression block = Expression.Block(
Expression.Goto(target, Expression.Constant(0)),
Expression.Label(target, Expression.Constant(-1))
);
/*
.Block() {
.Goto SampleLabel { 0 };
.Label
-1
.LabelTarget SampleLabel:
}
*/
LabelTarget target = Expression.Label();
BlockExpression block = Expression.Block(
Expression.Goto(target),
Expression.Label(target)
);
/*
.Block() {
.Goto #Label1 { };
.Label
.LabelTarget #Label1:
}
*/
Operator Yang Diperiksa
Operator yang diperiksa ditampilkan dengan simbol # di depan operator. Misalnya, operator penambahan yang dicentang ditampilkan sebagai #+.
Expression expr = Expression.AddChecked( Expression.Constant(1), Expression.Constant(2));
/*
1 #+ 2
*/
Expression expr = Expression.ConvertChecked( Expression.Constant(10.0), typeof(int));
/*
#(System.Int32)10D
*/