Lambda İfadeleri ve Delegates: Action, Func ve Predicate

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# Lambda İfadeleri ve Hazır Temsilciler (Action, Func, Predicate)​


Delegate, bir metodun imzasını (dönüş tipi ve aldığı parametreler) tutan bir "elçi" gibidir. Metotların kendisini değil, adresini taşır. Lambda ifadeleri (=>) ise bu elçilere en kısa yoldan görev atamamızı sağlar.



1. Lambda İfadeleri: Kodun Şiirsel Hali​


Lambda ifadeleri, "Girdi => İşlem" mantığıyla çalışır. Klasik metot tanımlama yükünü ortadan kaldırır.

C#:
// Klasik yöntem
public int KareAl(int x) { return x * x; }

// Lambda yöntemi (isimsiz fonksiyon)
(x) => x * x;



2. Hazır Temsilciler: Action, Func ve Predicate​


C# geliştiricileri her seferinde yeni bir delegate tanımlamak zorunda kalmasın diye Microsoft bize üç tane hazır kalıp sunmuştur:

A) Action: "Sadece Yap!"​

Geriye değer döndürmeyen (void) metotları temsil eder. 16 taneye kadar parametre alabilir.
C#:
Action<string> selamla = (isim) => Console.WriteLine($"Merhaba {isim}");

selamla("Gökhan"); // Çıktı: Merhaba Gökhan

B) Func: "Yap ve Sonucu Getir!"​

Geriye mutlaka bir değer döndüren metotları temsil eder. En son yazılan tip, geri dönüş tipidir.
C#:
// İlk iki int parametre, son int ise dönüş tipi
Func<int, int, int> topla = (s1, s2) => s1 + s2;

int sonuc = topla(5, 10); // Sonuç: 15

C) Predicate: "Doğru mu Yanlış mı?"​

Sadece bir parametre alır ve geriye her zaman bool** (true/false) döndürür. Genellikle filtreleme işlerinde kullanılır.
C#:
Predicate<int> ciftMi = (sayi) => sayi % 2 == 0;

Console.WriteLine(ciftMi(8)); // Çıktı: True



3. Nerede Kullanılır? (Gerçek Hayat Örneği)​


Bu yapılar en çok LINQ metotlarında karşımıza çıkar. Örneğin bir listenin içindeki elemanları filtrelemek aslında bir Predicate çalıştırmaktır.

C#:
List<string> isimler = new List<string> { "Ali", "Ayşe", "Mehmet", "Aslı" };

// Where metodu aslında bir Func<string, bool> yani Predicate bekler.
var aIleBaslayanlar = isimler.FindAll(s => s.StartsWith("A"));



Özet Karşılaştırma Tablosu​


TemsilciDönüş TipiParametreKullanım Amacı
ActionYok (void)0 - 16 arasıBir işlem gerçekleştirmek.
FuncVar (TResult)0 - 16 arasıHesaplama yapıp değer dönmek.
PredicateboolSadece 1 taneKoşul kontrolü yapmak.



Sonuç​


Action, Func ve Predicate yapılarını anlamak, sizi C# geliştiriciliğinde "usta" seviyesine taşır. Bu yapılar sayesinde kodunuz daha esnek, daha kısa ve daha modern hale gelir. Özellikle metotları birer veri gibi sağa sola taşımaya başladığınızda, C#'ın gerçek gücünü hissetmeye başlayacaksınız.
 
Geri
Üst