Giriş
Bu sınıfın kardeşi Action Delegate.
Tanımlama
Şöyle yaparız. İlk parametre girdi tipi. Son parametre ise çıktı tipidir.
Parametre alan Func için şöyle yaparız.
Elimizde bir liste olsun
Delegate[] döner. Şöyle yaparız.
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());
ÖrnekParametre alan Func için şöyle yaparız.
Func<int, int[,]> f = n =>
{
var r = new int[n, n];
...
return r;
};
f(3);
ÖrnekElimizde 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