Apa Itu Pohon Ekspresi
Pahami kode yang direpresentasikan sebagai struktur data.
Apa Itu Pohon Ekspresi adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Kode sebagai Data
Pohon ekspresi merepresentasikan kode sebagai struktur data yang dapat Anda periksa saat runtime, bukan sebagai instruksi terkompilasi yang hanya dapat dijalankan. C# memodelkannya dengan Expression<TDelegate>.
Lambda menjadi Delegat vs Pohon
Tetapkan lambda ke Func<...> dan Anda mendapatkan kode yang dapat dijalankan. Tetapkan lambda yang sama ke Expression<Func<...>> dan kompilator akan membangun pohon yang mendeskripsikannya.
using System;
using System.Linq.Expressions;
Func<int, int> runnable = x => x + 1; // compiled delegate
Expression<Func<int, int>> tree = x => x + 1; // data structure
Console.WriteLine(runnable(5)); // 6
Console.WriteLine(tree); // x => (x + 1)Memeriksa Pohon
Karena merupakan data, Anda dapat membaca bagian-bagian dari pohon ekspresi: parameternya, badannya, dan tipe simpulnya.
using System;
using System.Linq.Expressions;
Expression<Func<int, int>> tree = x => x + 1;
Console.WriteLine(tree.Parameters[0].Name); // x
Console.WriteLine(tree.Body.NodeType); // Add
Console.WriteLine(tree.ReturnType); // System.Int32Hierarki Ekspresi
Setiap simpul diturunkan dari System.Linq.Expressions.Expression. Jenis yang umum mencakup BinaryExpression, ParameterExpression, ConstantExpression, dan MethodCallExpression.
using System;
using System.Linq.Expressions;
Expression<Func<int, int>> tree = x => x + 1;
var body = (BinaryExpression)tree.Body;
Console.WriteLine(body.Left); // x
Console.WriteLine(body.Right); // 1Hanya Lambda Ekspresi yang Diizinkan
Anda hanya dapat mengubah lambda dengan satu ekspresi menjadi pohon. Lambda dengan badan pernyataan (menggunakan kurung kurawal) tidak dapat menjadi pohon ekspresi.
using System;
using System.Linq.Expressions;
Expression<Func<int, int>> ok = x => x * 2; // fine
// Expression<Func<int,int>> bad = x => { return x*2; }; // compile error
Console.WriteLine(ok); // x => (x * 2)Mengapa Ini Penting
Pohon ekspresi memungkinkan pustaka memahami kode Anda, bukan sekadar menjalankannya. Penyedia LINQ menerjemahkannya menjadi SQL, kueri dinamis, atau target lainnya.
NodeType Memberi Tahu Operasinya
Properti NodeType adalah nilai enum ExpressionType yang mengidentifikasi operasi pada simpul tersebut.
using System;
using System.Linq.Expressions;
Expression<Func<int, bool>> tree = x => x > 10;
Console.WriteLine(tree.Body.NodeType); // GreaterThanKonstanta dan Parameter
ParameterExpression mewakili masukan; ConstantExpression menyimpan nilai literal yang disisipkan ke dalam kode.
using System;
using System.Linq.Expressions;
Expression<Func<int, int>> tree = x => x + 5;
var body = (BinaryExpression)tree.Body;
Console.WriteLine(body.Left.GetType().Name); // ParameterExpression (or TypedParameterExpression)
Console.WriteLine(((ConstantExpression)body.Right).Value); // 5Pemanggilan Metode dalam Pohon
Lambda yang memanggil metode menjadi MethodCallExpression, yang menampilkan metode dan argumennya.
using System;
using System.Linq.Expressions;
Expression<Func<string, int>> tree = s => s.Length;
// member access here; a call example:
Expression<Func<string, string>> call = s => s.ToUpper();
var mc = (MethodCallExpression)call.Body;
Console.WriteLine(mc.Method.Name); // ToUpperPohon Tidak Dapat Diubah
Pohon ekspresi tidak dapat diubah. Untuk "mengubah" satu pohon, Anda membangun pohon baru dari bagian-bagiannya; itulah cara pengunjung dan penulis ulang bekerja.
Menyatukan Semuanya
Di sini kita memeriksa pohon predikat kecil secara menyeluruh: parameter, operator, dan konstanta.
using System;
using System.Linq.Expressions;
Expression<Func<int, bool>> isAdult = age => age >= 18;
var body = (BinaryExpression)isAdult.Body;
Console.WriteLine(isAdult.Parameters[0].Name); // age
Console.WriteLine(body.NodeType); // GreaterThanOrEqual
Console.WriteLine(((ConstantExpression)body.Right).Value); // 18Pemeriksaan Singkat
Pastikan Anda memahami hal yang membuat pohon ekspresi istimewa.
Rangkuman
Anda telah mempelajari apa itu pohon ekspresi.
Expression<TDelegate>merepresentasikan kode sebagai data yang dapat diperiksa.- Simpulnya mencakup parameter, konstanta, operasi biner, dan pemanggilan metode.
- Hanya lambda dengan satu ekspresi yang memenuhi syarat.
- Pohon tidak dapat diubah; penulisan ulang membangun pohon baru.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Apa Itu Pohon Ekspresi” gratis?
Ya — teks lengkap “Apa Itu Pohon Ekspresi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Apa Itu Pohon Ekspresi”?
Pahami kode yang direpresentasikan sebagai struktur data. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Apa Itu Pohon Ekspresi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Apa Itu Pohon Ekspresi
- Membangun Ekspresi Secara Manual
- Mengompilasi dan Menjalankan Ekspresi
- Pohon Ekspresi pada Penyedia LINQ