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.