CodeBlanks Logo Icon CodeBlanks

Expression.Compile

C# kursu · İleri seviye · Ders 40/83

Expression.Compile ile çalışma zamanında delege oluşturmayı öğrenirsin.

Expression.Compile

Compile(), bir ifade ağacını çalışma zamanında çalıştırılabilen bir delegeye çevirir. var fn = expr.Compile(); ile bir Func<T> elde edersin ve fn(5) gibi çağırabilirsin.

Çevrim, çalışma zamanında IL üretip delegeyi sarmalar; bu yüzden ilk çağrıda bir maliyeti vardır, sonraki çağrılar hızlıdır. Dinamik kod üretimi, karar motorları ve ifade tabanlı sorgu sağlayıcıları için kritik bir araçtır.

Compile ne zaman kullanılır?

Compile, ifade ağacını çalışma zamanında ürettiğin durumlarda kullanılır. Örneğin kullanıcıdan gelen koşulları birleştirip bir filtre oluşturduysan, sonucu Compile ile delegeye çevirip veri üzerinde çalıştırırsın.

Karar motorları ve dinamik sorgu sistemleri bunun tipik kullanımlarıdır. İfade ağacı derleme sırasında hazırsa, Expression<T> zaten bir delege olabileceği için Compile'a gerek kalmaz.

Uygulama Compile ile delege üret ve çağır

Expression<Func<int, int>> square = x => x * x; ile bir ifade ağacı tanımla. Func<int, int> fn = square.Compile(); ile delege üret. fn(5) sonucunu Console.WriteLine ile yazdır.

Örnek çözümü göster
Expression<Func<int, int>> square = x => x * x; ile ifade ağacını tanımla. Func<int, int> fn = square.Compile(); ile delege üret. Console.WriteLine(fn(5)); ile sonucu yazdır.
Örnek çözüm:
using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        Expression<Func<int, int>> square = x => x * x;
        Func<int, int> fn = square.Compile();
        Console.WriteLine(fn(5));
    }
}

Kendini test et

  1. Compile çağrısını tamamla

    var fn = expr.____();
    Cevabı göster
    var fn = expr.Compile();
  2. Compile ne döndürür?

    • Bir Expression ağacı
    • Bir string
    • Bir Type nesnesi
    • Çalıştırılabilen bir delege
    Cevabı göster

    Çalıştırılabilen bir delege — Doğru. Compile, çalıştırılabilen bir delege döndürür.

  3. Metodu amacına eşle

    Compile
    Delege üretir
    Invoke
    Delegeyi çağırır
    NodeType
    İşlem türü verir
    Parameters
    Parametre listesini verir

İleri seviye bölümündeki tüm dersler