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();
}

Hiç yorum yok:

Yorum Gönder