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

C# - Expression Func (Delegate) Nedir? Nasıl Kullanılı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.

Previous Article

JsonServer (Rest API) Nedir? Nasıl Oluşturulur?

Next Article

JavaScript'de var, let, const nedir? Arasındaki Farklar Nelerdir?

View Comments (1)

Bir Cevap Yazın