View Full Version : Anonymous Methods چیه ؟
  
Blackk_lightt
شنبه 30 شهریور 1387, 15:37 عصر
سلام
کسی در باره   Anonymous Methods چیزی میدونه ؟
چند تا مطلب تو سایت پیدا کردم ولی چیزی نفهمیدم
اگه ممکنه یکی توضیح بده
علیرضا مداح
شنبه 30 شهریور 1387, 16:20 عصر
سلام دوست عزیز،
پیش از ظهور C# 2.0 شما برای اعلان یک delegate میبایست از named-method ها استفاده میکردید ، به طور نمونه اگر قصد ست کردن رویداد Click مربوط به یک Button را به یک متد داشتید باید از کد زیر بهره میگرفتید :
private void Form1_Load(object sender, EventArgs e)
{
button1.Click += new EventHandler(button1_Click);
}
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked");
}
 
در C# 2.0 شما میتوانید delegate مورد نظر را در بدنه ی کد خود و بدون نیاز به تعریف متد مجزا اعلان کنید ، کد فوق را در C# 2.0 میتوانیم بدینصورت بازنویسی کنیم :
        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Click += delegate(object sender2, EventArgs e2)
        {
            MessageBox.Show("Clicked");
        };
        }
 
و معادل بازنویسی شده کد فوق در C# 3.0 با بهره گیری از ویژگی Lambda Expressions :
        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Click += (object sender2, EventArgs e2) =>
            {
                MessageBox.Show("Clicked");
            };
        }
Blackk_lightt
شنبه 30 شهریور 1387, 17:19 عصر
سلام
ممنون
ولی این روشها جز تو Syntax فرقشون چیه ؟
علیرضا مداح
شنبه 30 شهریور 1387, 19:48 عصر
1)کاهش حجم سورس کد
2)Share کردن آبجکت های متد با Anonymous Method یا Lambda Expression ی که در بدنه آن قرار دارد ، به طور مثال :
        private void Form1_Load(object sender, EventArgs e)
        {
            int i = 1;
            button1.Click += delegate(object sender2, EventArgs e2)
            {
                MessageBox.Show(i.ToString());
                //Shows "2" when button is clicked.
            };
            i = 2;
        }
3)... با مطالعه بیشتر در زمینه ی موارد ذکر شده به فواید آنها پی خواهید برد ،/
http://msdn.microsoft.com/en-us/magazine/cc163970.aspx
http://www.developer.com/net/csharp/article.php/3598381
http://www.codeproject.com/KB/cs/explore_lamda_exp.aspx
...
mdssoft
یک شنبه 31 شهریور 1387, 02:18 صبح
علیرضا جان ممنون
بعد از مدت ها تازه یه مثال خوب از Lambda Expression دیدم
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.