آشنایی با Anonymous Method – آموزش سی شارپ

آموزش سی شارپ : در کل دو نوع Anonymous Function وجود دارد:

  • Anonymous Method
  • Lambda Expression

در این مقاله بر روی مبحث Anonymous Method می پردازیم

Anonymous متدها قطعه کدی است که بوسیله delegate ها استفاده می شود. در قسمت موضوع delegate ها ما باید یک متد می ساختیم تا بتوانیم آن را به delegate الغا کنیم و از آن استفاده کنیم اما در اینجا یک نمونه (Instantiate) از خود delegate که را می سازیم و در آن متد را می نویسیم.

Simple Anonymous Method

در این قسمت یک نمونه از Anonymous متد را می نویسیم ، به کد زیر توجه کنید :

public delegate void Count(string attach);

public class Anon
    { 
public void Show_del()
      {
          
          Count count_new = delegate(string attach)
          {
              string[] str1 = { attach, "B", "C" };
              string[] str2 = { "1", "2", "3" };
              var x = from str1_ in str1
                      from str2_ in str2
                      select str1_ + str2_;
              foreach (var z in x)
              {
                  MessageBox.Show(z.ToString());
              }
             
          };
          count_new("A"); )1( 
      } 
}
Anon new_1 = new Anon();
new_1.Show_del ();

در اول باید delegate مورد نظر را تعریف کنیم . در قسمت بعد یک متد به نام Show_del  ایجاد می کنیم و در آن شی delegate را نمونه سازی می کنیم و در قسمت بلاک متد را می نویسیم ، همچنین می توانید پارامتر هم بگذارید .

Return Anonymous Method

حالا می خواهیم Anonymous متد ما نوع برگشتی هم داشته باشد . مانند کد زیر :

public delegate string ReturnCount(string str); 
 
  public void Return_del()
      {
          string result = "Null"; 
          ReturnCount newreturn = delegate(string str)
          {
             
              string[] str1 = { str, "B", "C" };
              string[] str2 = { "1", "2", "3" };
              var x = from str1_ in str1
                      from str2_ in str2
                      select str1_ + str2_;
              foreach (var z in x)
              {
                   result =  z.ToString();
                   MessageBox.Show(result); 
              }
             
              return result;  

          };
         newreturn("one"); 
      }

این قسمت آموزش سی شارپ هم مانند قسمت قبل هست فقط در آخر ما result رو برگرداندیم . و می تونیم آن را در برنامه صدا بزنیم .

Outer Variable با Anonymous Method

در این قسمت شما می توانید از متغیر های محلی برای مقدار دهی Anonymous متدها استفاده کنید، همچنین به عمل استفاده Anonymous متد ها از متغیر ها (Capture) می گویند.

به نمونه کد زیر توجه کنید :

public delegate string OutVar(string str) ;


class Const
    {
        public OutVar OutVar()
        {
            OutVar newreturn = delegate(string str)
            {
                string result = ""; 
                string[] str1 = { str, "B", "C" };
                string[] str2 = { "1", "2", "3" };
                var x = from str1_ in str1
                        from str2_ in str2
                        select str1_ + str2_;
                foreach (var z in x)
                {
                    result = z.ToString();
                    MessageBox.Show(result);
                }
                return result;
            };
            return newreturn;
        }
 string result; ;
            Const con = new Const();
            OutVar new_1 = con.OutVar();      (1)   
            result = new_1("End");

            MessageBox.Show(result);

در اینجا یک نمونه از شی delegate می سازیم و آن را مساوی با متدی که در کلاس Const تعریف کردیم قرار می دهیم ، و بعد از متغیر محلی استفاده می کنیم.

آموزش سی شارپ

آموزش سی شارپ

ورکشاپ رایگان دوره های تخصصی برنامه نویسی

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

درباره‌ی سعید لطفی

همچنین ببینید

الگوی ریپوزیتوری ( Repository Pattern ) در ASP.NET MVC

در این مقاله ، در مورد الگوی ریپوزیتوری (Repository Pattern ) که اغلب برای ایجاد برنامه …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *