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
- کوتاه کردن کد نویسی