0Pricing
C# Academy · Ders

İfade Ağaçları Nedir

Kodun veri yapısı olarak nasıl temsil edildiğini anlayın.

İfade Ağaçları Nedir, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.

Veri Olarak Kod

İfade ağacı, kodu yalnızca çalıştırabileceğiniz derlenmiş talimatlar yerine, çalışma zamanında inceleyebileceğiniz bir veri yapısı olarak temsil eder. C#, bunu Expression<TDelegate> ile modeller.

Temsilciye Dönüştürülen Lambda ile Ağaca Dönüştürülen Lambda

Bir lambda'yı Func<...> türüne atadığınızda çalıştırılabilir kod elde edersiniz. Aynı lambda'yı Expression<Func<...>> türüne atadığınızda derleyici, onu açıklayan bir ağaç oluşturur.

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)

Ağacı İnceleme

Bu bir veri olduğundan, bir ifade ağacının parçalarını okuyabilirsiniz: parametrelerini, body'sini ve düğüm türünü.

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

İfade Hiyerarşisi

Her düğüm System.Linq.Expressions.Expression sınıfından türetilir. Yaygın türler arasında BinaryExpression, ParameterExpression, ConstantExpression ve MethodCallExpression bulunur.

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

Yalnızca İfade Lambdalarına İzin Verilir

Yalnızca tek ifadeli bir lambda'yı ağaca dönüştürebilirsiniz. Deyim gövdeli lambdalar (süslü parantez içerenler) ifade ağacı olamaz.

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)

Neden Önemlidir

İfade ağaçları, kitaplıkların kodunuzu yalnızca çalıştırmak yerine anlamasını sağlar. LINQ sağlayıcıları bunları SQL'e, dinamik sorgulara veya başka hedeflere dönüştürür.

NodeType İşlemi Belirtir

NodeType özelliği, o düğümdeki işlemi tanımlayan bir ExpressionType enum değeridir.

using System;
using System.Linq.Expressions;

Expression<Func<int, bool>> tree = x => x > 10;
Console.WriteLine(tree.Body.NodeType); // GreaterThan

Sabitler ve Parametreler

Bir ParameterExpression bir girişi temsil eder; bir ConstantExpression ise koda gömülü bir sabit değeri barındırır.

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

Ağaçlardaki Yöntem Çağrıları

Bir yöntemi çağıran lambda, yöntemi ve bağımsız değişkenlerini açığa çıkaran bir MethodCallExpression olur.

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

Ağaçlar Değişmezdir

İfade ağaçları değişmezdir. Birini "değiştirmek" için parçalarından yeni bir ağaç oluşturursunuz; ziyaretçiler ve yeniden yazıcılar bu şekilde çalışır.

Hepsini Bir Araya Getirme

Burada küçük bir koşul ağacını baştan sona inceliyoruz: parametre, işleç ve sabit.

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

Kısa Kontrol

Bir ifade ağacını özel kılan şeyi kontrol edin.

Özet

İfade ağaçlarının ne olduğunu öğrendiniz.

  • Expression<TDelegate>, kodu incelenebilir veri olarak temsil eder.
  • Düğümler arasında parametreler, sabitler, ikili işlemler ve yöntem çağrıları bulunur.
  • Yalnızca tek ifadeli lambdalar uygundur.
  • Ağaçlar değişmezdir; yeniden yazma işlemi yeni ağaçlar oluşturur.

Sıkça Sorulan Sorular

“İfade Ağaçları Nedir” dersi ücretsiz mi?

Evet — “İfade Ağaçları Nedir” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.

“İfade Ağaçları Nedir” dersinde ne öğreneceğim?

Kodun veri yapısı olarak nasıl temsil edildiğini anlayın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“İfade Ağaçları Nedir” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İfade Ağaçları Nedir
  2. İfadeleri Elle Oluşturma
  3. İfadeleri Derleme ve Yürütme
  4. LINQ Sağlayıcılarında İfade Ağaçları
← C# Academy Sayfasına Dön