اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
3 سال پیش / خواندن دقیقه

متد های بی نام در سی شارپ + مثال

متدهای بی نام همانطور که از نامشان پیداست ، متدهایی هستند که فاقد نامند. این متد ها در سی شارپ با استفاده از کلمه ی کلیدی delegate تعریف میشوند. در این فصل با متدهای بی نام در سی شارپ آشنا خواهیم شد.

Anonymous Method

همانطور که از نام این متدها مشخص است، یک متد بی نام متدی است که نامی ندارد. متدهای بی نام در سی شارپ می‌توانند با استفاده از کلمه کلیدی delegate تعریف شوند و همچنین می توانند به متغیری که از نوع delegate تعریف شده است ، انتساب داده شوند.

public delegate void Print(int value);
static void Main(string[] args)
{
                Print print = delegate(int val) { 
                Console.WriteLine("Inside Anonymous method. Value: {0}", val); 
                };
    print(100);
}

خروجی نمونه مثال بالا به شکل زیر است :

Inside Anonymous method. Value: 100

متد های بی نام میتوانند به متغیرهایی که در خارج از خود تعریف شده‌اند ، دسترسی داشته باشند :

public delegate void Print(int value);
static void Main(string[] args)
{
                int i = 10;
    
                Print prnt = delegate(int val) {
        val += i;
                Console.WriteLine("Anonymous method: {0}", val); 
    };
    prnt(100);
}

خروجی نمونه مثال بالا به شکل زیر است :

Anonymous method: 110

متد های بی نام همچنین می توانند به عنوان آرگومان برای متدهایی که یک delegate را به عنوان پارامتر می‌پذیرند، ارسال شوند. در نمونه مثال زیر متد ()PrintHelperMethod در اولین پارامتر خود یک آرگومان از نوع delegate می‌پذیرد :

public delegate void Print(int value);
class Program
{
                public static void PrintHelperMethod(Print printDel,int val)
    { 
        val += 10;
        printDel(val);
    }
                static void Main(string[] args)
    {
        PrintHelperMethod(delegate(int val) { Console.WriteLine("Anonymous method: {0}", val); }, 100);
    }
}

خروجی نمونه مثال بالا به شکل زیر است :

Anonymous method: 110

محدودیت های متد های بی نام

محدودیت های استفاده از متدهای بی نام عبارت اند از :

  • در متدهای بی نام نمی توان از دستورات پرش همچون goto ، break و continue استفاده نمود.
  • متد های بی نام نمی توانند شامل پارامترهای ref و out باشند 



شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع