C#
C#

C# – Expression Func (Delegate) Nedir? Nasıl Kullanılır?

C# programlama dilinde, Expression Func (Delegate) olarak adlandırılan bir konsept, işlevsellik ve esneklik ekleyen bir yapıdır.


Delegate, C# dilinde metotları referanslayan bir türdür ve Expression Func, bir metodu veya bir değeri temsil etmek için kullanılır. Expression Func, genellikle LINQ sorgularında veya dinamik olarak ifadeleri oluştururken kullanılır. İfade Func’lar, ifadeleri değerlendirmek ve çalıştırmak için kullanılabilir ve derleme zamanında değil çalışma zamanında oluşturulabilir.

Expression Func (Delegate) Oluşturma:

Expression Func oluşturmak için genellikle Expression sınıfını ve Func delegesi kullanılır. Örneğin, bir toplama işlemi gerçekleştiren bir Expression Func oluşturalım:

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        // Parametreler için ifade değişkenleri oluşturun
        ParameterExpression paramA = Expression.Parameter(typeof(int), "a");
        ParameterExpression paramB = Expression.Parameter(typeof(int), "b");

        // Toplama ifadesi oluşturun: a + b
        BinaryExpression sum = Expression.Add(paramA, paramB);

        // Expression Func oluşturun: (a, b) => a + b
        Expression<Func<int, int, int>> addFunc = Expression.Lambda<Func<int, int, int>>(sum, paramA, paramB);

        // Expression Func'ı kullanarak ifadeyi değerlendirin
        Func<int, int, int> compiledFunc = addFunc.Compile();
        int result = compiledFunc(2, 3); // 2 + 3 = 5

        Console.WriteLine("Toplam: " + result);
    }
}

Yukarıdaki örnekte, Expression.Parameter ile parametre ifadeleri oluşturulur ve ardından Expression.Add ile toplama işlemi ifadesi oluşturulur. Son olarak, Expression.Lambda ile Expression Func oluşturulur ve bu Func derlenir ve çalıştırılır.

Expression Func’lar, özellikle LINQ sorgularında dinamik olarak sorgular oluşturmak veya ifadeleri değerlendirmek için kullanıldığında güçlüdür. Bu yapı, programcılara derleme zamanında statik olarak değil, çalışma zamanında dinamik olarak ifadeler oluşturma yeteneği sağlar.


Merhaba!, ishak.dev'de yazılım, tasarım ve teknoloji tutkunu biri olarak kendi deneyimlerimden ve öğrendiklerimden yola çıkarak hazırladığım yazılar paylaşıyorum. ishak.dev'i düzenli takip ederek yeni yayınlarımı kaçırmayın!

Yorumları Görüntüle

Bir Cevap Yazın