دلیگیت ها - تفاوت بین Action - Func - Predicate
هماهنطور که میدانیم delegate اشاره گری به یک متد است. در این مقاله سه نوع اشاره گر را خواهیم دید:
Action - Func - Predicate
Action
یک delegate است. میتواند برای اشاره به یک متد که نوع بازگشتی ندارد استفاده شود. (یعنی نوع بازگشتی void).
مثال:
using System;
namespace Delegates.Samples.Demo
{
class Program
{
static void Main(string[] args)
{
Action<string> log = new Action<string>(LogInfo);
log.Invoke("Hi ALL");
Console.ReadLine();
}
static void LogInfo(string message)
{
Console.WriteLine(message);
}
}
}
خروجی کد بالا: Hi ALL
Func
یک delegate است. می توانیم نوع پارامترهای ورودی را تعریف کنیم و در پایان می توانید نوع پارامتر خروجی را بنویسیم.
using System;
namespace Delegates.Samples.Demo
{
class Program
{
static void Main(string[] args)
{
Func<int, int, int> addFunc = new Func<int, int, int>(Add);
int result = addFunc(3, 4);
Console.WriteLine(result);
Console.ReadLine();
}
static int Add(int a, int b)
{
return a + b;
}
}
}
خروجی کد بالا: 7
Predicate
همیشه مقدار bool بر می گرداند. هر نوعی از پارامتر را به عنوان ورودی می گیرد.
using System;
namespace Delegates.Samples.Demo
{
class Program
{
static void Main(string[] args)
{
Predicate<int> IsEven = new Predicate<int>(IsEvenNumber);
Console.WriteLine(IsEven(10));
Console.WriteLine(IsEven(1567));
Console.ReadLine();
}
static bool IsEvenNumber(int number)
{
return number % 2 == 0;
}
}
}
خروجی کد بالا:
True
False
منبع: C-SharpCorner