C# Func önceden tanımlanmış delege türü

20 Ara

Delegeler ile ilgili yazımızda delege tanımlamayı ve kullanmayı incelemiştik. Delegelerin metodları temsil ettiğini ve hangi tür metodların temsil edeceğini ise delegeler oluşturulurken belirlendiğini görmüştük.

Bu yazımızda .Net Framework 3.5 ile gelen ön tanımlı delege olan Func<T> tipini incelemeye çalışacağız.

Func<T> önceden tanımlanmış olan ve T tipinde değerler döndüren metodları temsil eden bir delegedir. Func<T> tipi birden fazla parametre ile beslenebilecek şekilde hazırlanmış bir tiptir. Yani bir veya birden fazla parametre alabilecek metodları temsil eden önceden tanımlanmış bir delege türüdür. Func<T> kullandığımızda delege tanımlamamıza gerek kalmamaktadır.

Func<T>
Func<T,Tresult>
Func<T1,T2,Tresult>
Func<T1,T2,…T3,Tresult>

Her bir T metodun alacağı parametre tipini ve TResult ise temsil edilen metodun dönüş tipipni temsil etmektedir.

Örnek: Func<int,string> delegesi int türünden parametre alan ve string türünden değer döndüren metodları temsil eder.

Yukarıdaki örnekte pageurl adında bir temsilciye, desteklediği formda, yani string dönüş tipinde olan ve int tipinde tek bir parametre alan bir metod atanmıştır.

Func<T> ifadesine, daha önceden oluşturulmuş bir metodu temsil ettrebildiğimiz gibi lambda expression ile de daha önceden tanımlanmamış bir metodu da temsil ettirebiliriz.

Yukarıdaki örneği aşağıdaki gibi lambda ifadesi ile de kısa şekilde yazabiliriz.

Func kavramına kısa bir tanımdan sonra biraz da bu kavrama neden ihtiyaç duyulduğundan bahsedelim. Nerede kolaylık sağlamaktadır.

.Net framework ortamına LINQ sorgularının kullanımı sırasında büyük kolaylık sağlamaktadır. Bir listenin içerisindeki verilerin süzülmesi veya verileriüzerinde değişik işlemler yaparken önceden belirlenmiş Func<T> tipindeki temsilcilere göre sorgular yaptırabiliriz. .Net işlerimizi kolaylaştırmak için Func<T> delegelerini oluşturmuş ve kullanımımıza sunmuştur.

Yukarıda List<int> listesi içerisindeki sayılardan 30’dan küçük olanları seçmek için listenin where extension metodunu kullanıyoruz. Where extension metodu Func<int,bool> şeklinde bir delegeyi parametre olarak almaktadır. Select adında oluşturduğumuz metod da int türünde parametre almakta ve bool türünden sonuç döndürmektedir.

Bu ifadenin lambda ifadesi şu şekilde olmaktadır.

Kendi oluşturduğumuz sınıflarımızda da Func<T> delegelerini kullanarak pratik işlemler yaptırabiliriz.

Bu yazımızda:

  • Func<T> delegesinin ne olduğunu
  • Nasıl kullanıldığını
  • Nerelerde karşımıza çıkabileceğini

Görmeye çalıştık.

Tekrar görüşmek dileğiyle…