Bagikan melalui


Expression<TDelegate> Kelas

Definisi

Mewakili ekspresi lambda yang ditik dengan kuat sebagai struktur data dalam bentuk pohon ekspresi. Kelas ini tidak dapat diwariskan.

generic <typename TDelegate>
public ref class Expression sealed : System::Linq::Expressions::LambdaExpression
public sealed class Expression<TDelegate> : System.Linq.Expressions.LambdaExpression
type Expression<'Delegate> = class
    inherit LambdaExpression
Public NotInheritable Class Expression(Of TDelegate)
Inherits LambdaExpression

Jenis parameter

TDelegate

Jenis delegasi yang diwakili Expression<TDelegate> .

Warisan
Expression<TDelegate>

Contoh

Contoh kode berikut menunjukkan cara mewakili ekspresi lambda baik sebagai kode yang dapat dieksekusi dalam bentuk delegasi dan sebagai data dalam bentuk pohon ekspresi. Ini juga menunjukkan cara mengubah pohon ekspresi kembali menjadi kode yang dapat dieksekusi dengan menggunakan Compile metode .


// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));

// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));

/*  This code produces the following output:

    deleg(4) = True
    deleg2(4) = True
*/

' Lambda expression as executable code.
Dim deleg As Func(Of Integer, Boolean) = Function(ByVal i) i < 5
' Invoke the delegate and display the output.
MsgBox(String.Format("deleg(4) = {0}", deleg(4)))

' Lambda expression as data in the form of an expression tree.
Dim expr As System.Linq.Expressions.Expression(Of Func(Of Integer, Boolean)) = Function(ByVal i) i < 5
' Compile the expression tree into executable code.
Dim deleg2 As Func(Of Integer, Boolean) = expr.Compile()
' Invoke the method and print the output.
MsgBox(String.Format("deleg2(4) = {0}", deleg2(4)))

' This code produces the following output:
'
' deleg(4) = True
' deleg2(4) = True

Keterangan

Saat ekspresi lambda ditetapkan ke variabel, bidang, atau parameter yang jenisnya adalah Expression<TDelegate>, pengkompilasi memancarkan instruksi untuk membangun pohon ekspresi.

Catatan

Konversi dari ekspresi lambda ke jenis Expression<D> (Expression(Of D) di Visual Basic) ada jika konversi dari ekspresi lambda ke delegasi jenis D ada. Namun, konversi mungkin gagal, misalnya, jika isi ekspresi lambda adalah blok. Ini berarti bahwa delegasi dan pohon ekspresi ber perilaku yang sama sehubungan dengan resolusi kelebihan beban.

Pohon ekspresi adalah representasi data dalam memori dari ekspresi lambda. Pohon ekspresi membuat struktur ekspresi lambda transparan dan eksplisit. Anda dapat berinteraksi dengan data di pohon ekspresi seperti yang Anda bisa dengan struktur data lainnya.

Kemampuan untuk memperlakukan ekspresi sebagai struktur data memungkinkan API menerima kode pengguna dalam format yang dapat diperiksa, ditransformasikan, dan diproses secara kustom. Misalnya, implementasi akses data LINQ ke SQL menggunakan fasilitas ini untuk menerjemahkan pohon ekspresi ke pernyataan Transact-SQL yang dapat dievaluasi oleh database.

Banyak operator kueri standar yang ditentukan di Queryable kelas memiliki satu atau beberapa parameter jenis Expression<TDelegate>.

NodeType dari adalah Expression<TDelegate>Lambda.

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) Gunakan metode atau Lambda<TDelegate>(Expression, ParameterExpression[]) untuk membuat Expression<TDelegate> objek.

Properti

Body

Mendapatkan isi ekspresi lambda.

(Diperoleh dari LambdaExpression)
CanReduce

Menunjukkan bahwa simpul dapat dikurangi menjadi simpul yang lebih sederhana. Jika ini mengembalikan true, Reduce() dapat dipanggil untuk menghasilkan formulir yang dikurangi.

(Diperoleh dari Expression)
Name

Mendapatkan nama ekspresi lambda.

(Diperoleh dari LambdaExpression)
NodeType

Mengembalikan jenis node dari ini Expression.

(Diperoleh dari LambdaExpression)
Parameters

Mendapatkan parameter ekspresi lambda.

(Diperoleh dari LambdaExpression)
ReturnType

Mendapatkan jenis pengembalian ekspresi lambda.

(Diperoleh dari LambdaExpression)
TailCall

Mendapatkan nilai yang menunjukkan apakah ekspresi lambda akan dikompilasi dengan pengoptimalan panggilan ekor.

(Diperoleh dari LambdaExpression)
Type

Mendapatkan jenis statis ekspresi yang diwakili ini Expression .

(Diperoleh dari LambdaExpression)

Metode

Accept(ExpressionVisitor)

Dikirim ke metode kunjungan tertentu untuk jenis node ini. Misalnya, MethodCallExpression memanggil VisitMethodCall(MethodCallExpression).

(Diperoleh dari Expression)
Compile()

Mengkompilasi ekspresi lambda yang dijelaskan oleh pohon ekspresi ke dalam kode yang dapat dieksekusi dan menghasilkan delegasi yang mewakili ekspresi lambda.

Compile(Boolean)

Mengkompilasi ekspresi lambda yang dijelaskan oleh pohon ekspresi ke dalam kode yang ditafsirkan atau dikompilasi dan menghasilkan delegasi yang mewakili ekspresi lambda.

Compile(Boolean)

Menghasilkan delegasi yang ditafsirkan atau dikompilasi yang mewakili ekspresi lambda.

(Diperoleh dari LambdaExpression)
Compile(DebugInfoGenerator)

Menghasilkan delegasi yang mewakili ekspresi lambda.

Compile(DebugInfoGenerator)

Menghasilkan delegasi yang mewakili ekspresi lambda.

(Diperoleh dari LambdaExpression)
CompileToMethod(MethodBuilder)

Mengkompilasi lambda ke dalam definisi metode.

(Diperoleh dari LambdaExpression)
CompileToMethod(MethodBuilder, DebugInfoGenerator)

Mengkompilasi lambda ke dalam definisi metode dan informasi debug kustom.

(Diperoleh dari LambdaExpression)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
Reduce()

Mengurangi simpul ini menjadi ekspresi yang lebih sederhana. Jika CanReduce mengembalikan true, ini akan mengembalikan ekspresi yang valid. Metode ini dapat mengembalikan simpul lain yang harus dikurangi.

(Diperoleh dari Expression)
ReduceAndCheck()

Mengurangi simpul ini menjadi ekspresi yang lebih sederhana. Jika CanReduce mengembalikan true, ini akan mengembalikan ekspresi yang valid. Metode ini dapat mengembalikan simpul lain yang harus dikurangi.

(Diperoleh dari Expression)
ReduceExtensions()

Mengurangi ekspresi ke jenis node yang diketahui (yang bukan node Ekstensi) atau hanya mengembalikan ekspresi jika sudah menjadi jenis yang diketahui.

(Diperoleh dari Expression)
ToString()

Mengembalikan representasi tekstual dari Expression.

(Diperoleh dari Expression)
Update(Expression, IEnumerable<ParameterExpression>)

Membuat ekspresi baru yang seperti ini, tetapi menggunakan anak-anak yang disediakan. Jika semua anak sama, itu akan mengembalikan ekspresi ini.

VisitChildren(ExpressionVisitor)

Mengurangi simpul lalu memanggil delegasi pengunjung pada ekspresi yang dikurangi. Metode ini memberikan pengecualian jika node tidak dapat dikurangi.

(Diperoleh dari Expression)

Berlaku untuk

Lihat juga