دلیگیت ها - تفاوت بین Action - Func - Predicate

دلیگیت ها - تفاوت بین 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