Action در سی شارپ یک نوع delegate محسوب میشود و عملکرد مشابهی با دلیگت Func دارد. تفاوت اصلی این دو در این است که از Action به همراه متدهایی استفاده میشود که نوع بازگشتی آنها void باشد. در این فصل با دلیگیت Func در سی شارپ آشنا میشویم.
Action
Action یک نوع delegate محسوب میشود که در فضای نامی System قرار دارد. عملکرد Action شبیه Func بوده و تفاوت آنها در این است که Action مقداری را بر نمی گرداند. به عبارت دیگر یک Action میتواند برای متد های که دارای مقدار بازگشتی void هستند، مورد استفاده قرار گیرد. برای مثال دلیگیت Print زیر یک مقدار صحیح را چاپ میکند :
public delegate void Print(int val);
static void ConsolePrint(int i)
{
Console.WriteLine(i);
}
static void Main(string[] args)
{
Print prnt = ConsolePrint;
Prnt(10);
}
خروجی نمونه مثال بالا به شکل زیر است :
10
به جای تعریف دلیگت Print در بالا می توان مثال را به شکل زیر بازنویسی کرد :
static void ConsolePrint(int i)
{
Console.WriteLine(i);
}
static void Main(string[] args)
{
Action<int> printActionDel = ConsolePrint;
printActionDel(10);
}
میتوان یک دلیگیت Action را با استفاده از کلمه کلیدی new و یا با استفاده از یک متد مقداردهی اولیه کرد :
Action<int> printActionDel = ConsolePrint;
//Or
Action<int> printActionDel = new Action<int>(ConsolePrint);
میتوان از متدهای بی نام همراه دلیگیت Action استفاده نمود :
static void Main(string[] args)
{
Action<int> printActionDel = delegate(int i)
{
Console.WriteLine(i);
};
printActionDel(10);
}
خروجی نمونه مثال بالا به شکل زیر است :
10
میتوان به همراه دلیگیت Action از عبارتهای لمبدا نیز استفاده نمود :
static void Main(string[] args)
{
Action<int> printActionDel = i => Console.WriteLine(i);
printActionDel(10);
}
مزایای استفاده از Action و Func
مزایای استفاده از دلیگیت های Action و Func به شرح زیر است :
- تعریف سریع و آسان یک delegate
- کوتاه کردن کد نویسی