CodeBlanks Logo Icon CodeBlanks

Expression gövdesini inceleme

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

Expression Body, NodeType ve Parameter okumayı öğrenirsin.

Expression gövdesini inceleme

Bir ifade ağacının yapısını Body, NodeType, Parameters ve Type ile gezersin. NodeType ifadenin işlem türünü (ör. Add, Multiply, Lambda) verir.

Body iç ifadeyi tutar. Örneğin x => x * x için Body bir Multiply düğümüdür; Body.NodeType Multiply değerini döndürür. Bu, ORM'lerin sorguyu anlaması için kullanılır.

Parameter okuma

expr.Parameters, lambda parametrelerinin listesidir. Her öğe bir ParameterExpression'dır ve Name ile Type özelliklerine sahiptir. (a, b) => a + b lambdası iki parametre içerir.

Parametreleri okumak, ifade ağacını sıfırdan yeniden kurmak veya başka bir biçime çevirmek (ör. SQL) için gereklidir. Sağlayıcılar, hangi parametrenin hangi sütuna karşılık geldiğini bu liste üzerinden belirler.

Uygulama İfade gövdesini incele

Expression<Func<int, int, int>> add = (a, b) => a + b; şeklinde iki parametreli bir ifade ağacı tanımla. add.Body.NodeType ve add.Body değerlerini ayrı ayrı Console.WriteLine ile yazdır.

Örnek çözümü göster
Expression<Func<int, int, int>> add = (a, b) => a + b; ile ifade ağacını tanımla. Sonra Console.WriteLine(add.Body.NodeType); ve Console.WriteLine(add.Body); çağır.
Örnek çözüm:
using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        Expression<Func<int, int, int>> add = (a, b) => a + b;
        Console.WriteLine(add.Body.NodeType);
        Console.WriteLine(add.Body);
    }
}

Kendini test et

  1. NodeType değerini anlamına eşle

    Lambda
    Lambda ifadesi
    Multiply
    Çarpma işlemi
    Add
    Toplama işlemi
    Constant
    Sabit değer
  2. İlk parametre adını al

    var name = expr.____[0].Name;
    Cevabı göster
    var name = expr.Parameters[0].Name;
  3. NodeType ne döndürür?

    • Lambda'nın parametre listesini
    • İfadenin işlem türünü (Multiply, Add, ...)
    • Sonucun değerini
    • İfadenin dize halini
    Cevabı göster

    İfadenin işlem türünü (Multiply, Add, ...) — Doğru. NodeType, ifadenin işlem türünü döndürür.

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