Func etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Func etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Şubat 2018 Salı

Func Delegate

Giriş
Bu sınıfın kardeşi Action Delegate.

Tanımlama
Şöyle yaparız. İlk parametre girdi tipi. Son parametre ise çıktı tipidir.
Func<int, string>;
Şöyle yaparız. Girdisi olmayan sadece string dönen bir delegate'tir.
Func<string>;
Örnek
Parametre almayan Func için şöyle yaparız.
System.Func<string> f = () =>
{
  ...
  return "...";
};

System.Console.WriteLine(f());
Örnek
Parametre alan Func için şöyle yaparız.
Func<int, int[,]> f = n =>
{
  var r = new int[n, n];
  ...

 return r;
};

f(3);
Örnek
Elimizde bir liste olsun
// A list of delegates that accept an integer and return a string
List<Func<int, string>> delegateList = new List<Func<int, string>>();
Metod eklemek için şöyle yaparız.
public static string Foo(int x)
{
  ...
}
delegateList.Add (Foo); // Add a delegate to a named method
delegate eklemek için şöyle yaparız.
delegateList.Add(delegate(int x) { return $"Bar {x * 2}"; } ); 
lambda eklemek için şöyle yaparız.
delegateList.Add(x => $"Baz {x * 3}"); // Add a delegate to a lambda
Çağırmak için şöyle yaparız.
foreach (var del in delegateList)
{
  Console.WriteLine(del(23));
}
GetInvocationList metodu
Delegate[] döner. Şöyle yaparız.
Func<bool> funcList = null;
funcList += Init;
funcList += Process;
foreach (var func in funcList.GetInvocationList())
{
  var fn = func as Func<bool>;
  bool execuationStatus = fn();
}