سلام دوست عزیز،
پیش از ظهور 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");
};
}