بررسی خیلی سریع مفهوم Yeld در سی شارپ
1400/02/06 - 11:57:24 // MVC 5 & 6 // 0 نظر // 3355 بازدید
فرض کنید قرار است در یک متد لیستی از همکاران را به عنوان مثال برگردانید، این لیست از دیتابیس خوانده می شود و قطعن باید به صورت کامل Populate شود و سطح بالاتر که آنرا صدا میزند پاس داده شود. به دو پیاده سازی دقت کنید، پیاده سازی اول به صورت یابویی و پیاده سازی دوم به لحاظ کردن کمی استفاده از مغز و در کنار آن استفاده از مفهوم yieldانجام گردیده است.
فرض کنید قرار است در یک متد لیستی از همکاران را به عنوان مثال برگردانید، این لیست از دیتابیس خوانده می شود و قطعن باید به صورت کامل Populate شود و سطح بالاتر که آنرا صدا میزند پاس داده شود. به دو پیاده سازی دقت کنید، پیاده سازی اول به صورت یابویی و پیاده سازی دوم به لحاظ کردن کمی استفاده از مغز و در کنار آن استفاده از مفهوم Yeld انجام گردیده است.
در پیاده سازی یابویی، باید کل دیتا از منبع داده که حالا هر چیزی میتواند باشد باید دریافت و بعد به بیرون پاس داده شود. برای اینکار از متد SimpleDataPrepration استفاده خواهیم نمود.
خروجی متد یک لیست است و باید یک متغیر واسط داشته باشیم تا پس از تمام شدن روند اضافه شدن رکوردها، به خروجی پاس داده شود. این تکه کد را در یک Region به اسم Junior گذاشتم.
حالا ببینیم می شود کمی عاقلانه تر کد نوشت ؟ . فکر کنم با yieldReturn بشود!. با استفاده از yield return ، یک وضعیت از تولید به مصرف خواهیم داشت. یعنی درست در لحظه ای که رکورد را از مثلن دیتابیس بخوانم، آنرا به بیرون از متد پاس میدهم و سطوح بالاتر کار خود را شروع میکنند و منتنظر پایان و ارسال همه رکوردها نخواهند ایستاد. متد جدید را WiseDataPrepration نامگذاری میکنم. برویم ببینیم چه شکلی میشود
ضمنن نوع خروجی هم دیگر List نیست و یک IEnumerable است که همین تفاوت هم برای خود جای بحث و بررسی دارد و سبب عاقلانه تر و بهتر شدن کد خواهد شد
سورس داستان هم که هست. خوش باشید
معرفی نویسنده : علی کلاهدوزان
سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .