در این قسمت از وبسایت پرووید آموزش تصویری کار با Lambda Expression را برای شما در نظر گرفته ایم. امیدواریم که مورد توجه شما قرار بگیرد.
بررسی آناتومی یک Lambda Expression
همان طور که احتمالاً می دانید در سی شارپ 3 و یا .Net Framework 3.5 اولین بار ماهیت Lambda Expression ها در کنار Linq معرفی شدند در رابطه با LINQ می توانید از آموزش LINQ در سی شارپ و آموزش مباحث پیشرفته LINQ در سی شارپ استفاده کنید. در واقع Lambda Expression یک روش کوتاه تر برای نوشتن متدهای بی نام و یا همان Anonymous Method ها می باشند. در رابطه با Anonymous Method ها در آموزش سی شارپ دات نت در ویژوال استادیو و آموزش رایگان برنامه نویسی با زبان سی شارپ بیشتر صحبت کردهایم. برای مثال کدی که در قسمت زیر مشاهده می کنید نحوه تعریف کردن یک Anonymous Method در زبان سی شارپ را نشان میدهد که با استفاده از آن می توان تشخیص داد که آیا یک دانش آموز نوجوان و یا Teenager به حساب می آید و یا خیر.
delegate(Student s) { return s.Age > 12 && s.Age < 20; };
این متد بی نام که در قسمت بالا تعریف شده است را میتوان به صورت کوتاهتری توسط یک Lambda Expression نوشت. این موضوع در کد زیر نشان داده شده است.
s => s.Age > 12 && s.Age < 20
حال در رابطه با تکامل Anonymous Method ها به Lambda Expression ها کمی صحبت خواهیم کرد. لطفاً بار دیگر به کدی که در قسمت زیر آمده است نگاه کنید.
delegate(Student s) { return s.Age > 12 && s.Age < 20; };
همانطور که گفتیم یک Lambda Expression نحوه نوشتن یک Anonymous Method به روشی کوتاهتر را در دسترس ما قرار میدهد. اولین اتفاقی که در کدهای بالا افتاده است این است که کلمه کلیدی delegate حذف شده و همچنین به جای لحاظ کردن نوع پارامتر ورودی از عملگر => استفاده کردهایم. در نوشتن Lambda Expression ها یک نکته دیگر وجود دارد که می تواند به کم شدن حجم کد نیز کمک کند.
اگر Lambda Expression شما فقط یک جمله داشته باشد نیازی به نوشتن کلمه return و استفاده کردن از {} و همچنین علامت ; نیست. بنابراین با حذف کردن این موارد میتوانیم حجم کد را کاهش بدهیم. در آموزشکدنویسی تمیز: نوشتن کد برای انسان ها و آموزش اصول کدنویسی با کیفیت بالا در سی شارپ خدمتتان عرض کردهایم که هر چقدر حجم کد شما کمتر باشد به مراتب شرایط کد بهتر میشود. موضوع دیگر اینکه اگر Lambda Expression شما فقط یک پارامتر ورودی دریافت کند نیز نیازی به لحاظ کردن {} نیست و این موضوع خود می تواند حجم کد را بیش از پیش کاهش بدهد.
نوشتن Lambda Expression ها با چندین پارامتر
اگر که Lambda Expression مورد نظر شما بیش از یک پارامتر داشته باشد باید آنها را درون {} لحاظ کنید. این موضوع در کد زیر نشان داده شده است.
(s, youngAge) => s.Age >= youngage;
علاوه بر این می توان نوع داده هرکدام از این پارامترها را در صورت نیاز لحاظ نمود. این موضوع در کد زیر نیز نشان داده شده است.
(Student s,int youngAge) => s.Age >= youngage;
نوشتن Lambda Expression ها بدون پارامتر
دقت کنید که در کار کردن با Lambda Expression ها مجبور نیستید که لزوماً پارامتر ورودی لحاظ کنید. به عبارت دیگر Lambda Expression ها میتوانند بدون هیچ پارامتری مورد استفاده قرار بگیرند. این موضوع در کد زیر نشان داده شده است.
() => Console.WriteLine("Parameter less lambda expression")
نوشتن چندین جمله در یک Lambda Expression
اگر Lambda Expression شما دارای بیش از یک جمله باشد می بایست با استفاده از {} این جملات را در بدنه Lambda Expression لحاظ کنید. این موضوع در کد زیر نشان داده شده است.
(s, youngAge) => { Console.WriteLine("Lambda expression with multiple statements in the body"); Return s.Age >= youngAge; }
تعریف کردن متغیر های محلی در Lambda Expression ها
به سادگی می توان در بدنه ی Lambda Expression متغیرهایی را تعریف کرد که سپس از آنها استفاده نمود. این موضوع در کد زیر نشان داده شده است.
</pre> s => { int youngAge = 18; Console.WriteLine("Lambda expression with multiple statements in the body"); return s.Age >= youngAge; }
موضوع دیگر اینکه Lambda Expression ها را میتوان به Delegate هایی از پیش ساخته شده از قبیل Func و Action و Predicate در زبان برنامه نویسی سی شارپ لحاظ نمود. در این آموزش ویدیویی در رابطه با Lambda Expression ها و ماهیت آنها در زبان برنامه نویسی سی شارپ صحبت خواهیم کرد. ضمناً توصیه میکنیم که برای درک کردن هرچه بهتره ارتباط Event ها و Delegate ها و Lambda Expression ها از آموزش Event ها، Delegate ها و Lambda Expression ها در سی شارپ دیدن کنید. استفاده کردن از بسته های آموزشی دیگر مرتبط با این مبحث از قبیل آموزش سی شارپ دات نت در ویژوال استادیو نیز می تواند بسیار مفید باشد. ضمناً در صورت تمایل می توانید از آموزش رایگان رویداد ها Event در سی شارپ و آموزش رایگان دیلیگیت ها Delegate در سی شارپ نیز دیدن بفرمایید.