0Pricing
C# Academy · Pelajaran

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.Int32

Hierarki 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); // 1

Hanya 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); // GreaterThan

Konstanta 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); // 5

Pemanggilan 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); // ToUpper

Pohon 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); // 18

Pemeriksaan 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

  1. Apa Itu Pohon Ekspresi
  2. Membangun Ekspresi Secara Manual
  3. Mengompilasi dan Menjalankan Ekspresi
  4. Pohon Ekspresi pada Penyedia LINQ
← Kembali ke C# Academy