Yanıtlar:
Predicate
: esasen Func<T, bool>
; "belirtilen argüman temsilci tarafından temsil edilen koşulu karşılıyor mu?" sorusunu soruyor. List.FindAll gibi şeylerde kullanılır.
Action
: Bağımsız değişkenler verildiğinde bir eylem gerçekleştirin. Çok genel bir amaç. Temel olarak, yan etkiler anlamına geldiği için LINQ'da fazla kullanılmaz.
Func
: Genellikle argümanı dönüştürmek için, örneğin karmaşık bir yapıyı bir özelliğe yansıtarak, LINQ'da yaygın olarak kullanılır .
Diğer önemli delegeler:
EventHandler
/ EventHandler<T>
: WinForms'un her yerinde kullanılır
Comparison<T>
: IComparer<T>
Delege formunda olduğu gibi.
EventHandler/EventHandler<T>
WinForms'un her yerinde de görünür.
Action
, Func
vePredicate
tüm temsilci ailesine aittir.
Action
: Eylem n girdi parametresi alabilir, ancak geçersiz döndürür.
Func
: Func n giriş parametresini alabilir, ancak her zaman sağlanan türün sonucunu döndürür. Func<T1,T2,T3,TResult>
, burada T1, T2, T3 giriş parametreleridir ve TResult bunun çıktısıdır.
Predicate
: Tahmin aynı zamanda bir Func şeklidir, ancak her zaman boole geri döner. Basit bir deyişle, sarıcıdır Func<T,bool>
.
MethodInvoker, WinForms geliştiricilerinin kullanabileceği bir yöntemdir; hiçbir argümanı kabul etmez ve sonuç döndürmez. Eylemden önce gelir ve hala BeginInvoke () ve türünün türetilmemiş bir Temsilci kabul ettiği için UI iş parçacığını çağırırken kullanılır; Action da aynı şeyi yapacaktır.
myForm.BeginInvoke((MethodInvoker)delegate
{
MessageBox.Show("Hello, world...");
});
Ayrıca ThreadStart ve ParameterizedThreadStart; yine çoğu insan bugünlerde bir Eylem yerine geçecek.
Predicate, Func ve Action, .NET'in dahili delege örnekleridir. Bu delege örneklerinin her biri, özel imzalı kullanıcı yöntemlerine başvurabilir veya yönlendirebilir.
Eylem temsilcisi - Eylem temsilcisi örnekleri bağımsız değişkenleri alan ve geçersiz döndüren yöntemlere işaret edebilir.
Func delege - Func delege örneği, değişken sayıda bağımsız değişken alan ve bir tür döndüren yöntem (ler) i işaret edebilir.
Öngörme - Tahminler işlev temsilci örneklerine benzer ve değişken sayıda bağımsız değişken alan ve bir bool türü döndüren yöntemlere işaret edebilir.
Eylem ve lambda ile Func:
person p = new person();
Action<int, int> mydel = p.add; /*(int a, int b) => { Console.WriteLine(a + b); };*/
Func<string, string> mydel1 = p.conc; /*(string s) => { return "hello" + s; };*/
mydel(2, 3);
string s1= mydel1(" Akhil");
Console.WriteLine(s1);
Console.ReadLine();
Func daha LINQ dostudur, parametre olarak iletilebilir. (Nokta içermeyen)
Tahmin edemez, tekrar sarılmalıdır.
Predicate<int> IsPositivePred = i => i > 0;
Func<int,bool> IsPositiveFunc = i => i > 0;
new []{2,-4}.Where(i=>IsPositivePred(i)); //Wrap again
new []{2,-4}.Where(IsPositivePred); //Compile Error
new []{2,-4}.Where(IsPositiveFunc); //Func as Parameter
Bağımsız değişkenler ve her türün neyi geri döndürdüğü hakkında basit bir örnek
Bu Func iki int bağımsız değişkeni alır ve bir int döndürür.Func her zaman dönüş türüne sahiptir
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 5));//Print 8
Bu durumda func'un bağımsız değişkenleri yoktur ancak bir dize döndürür
Func<string> print = () => "Hello world";
Console.WriteLine(print());//Print Hello world
Bu Eylem iki int argümanı alır ve geçersiz dönüş
Action<int, int> displayInput = (x, y) => Console.WriteLine("First number is :" + x + " , Second number is "+ y);
displayInput(4, 6); //Print First number is :4 , Second number is :6
Bu Tahmin bir argüman alır ve her zaman boole döner.
Predicate<int> isPositive = (x) => x > 0;
Console.WriteLine(isPositive(5));//Print True
System.Converter<TInput, TOutput>
nadiren kullanılan rağmen.