Ali Kolahdoozan
Ali Kolahdoozan
خواندن ۱ دقیقه·۴ سال پیش

بررسی خیلی سریع مفهوم Yield در سی شارپ

بررسی خیلی سریع مفهوم Yield در سی شارپ

فرض کنید قرار است در یک متد لیستی از همکاران را به عنوان مثال برگردانید، این لیست از دیتابیس خوانده می شود و قطعن باید به صورت کامل Populate شود و سطح بالاتر که آنرا صدا میزند پاس داده شود. به دو پیاده سازی دقت کنید، پیاده سازی اول به صورت یابویی و پیاده سازی دوم به لحاظ کردن کمی استفاده از مغز و در کنار آن استفاده از مفهوم Yield انجام گردیده است.

در پیاده سازی یابویی، باید کل دیتا از منبع داده که حالا هر چیزی میتواند باشد باید دریافت و بعد به بیرون پاس داده شود. برای اینکار از متد SimpleDataPrepration استفاده خواهیم نمود.

خروجی متد یک لیست است و باید یک متغیر واسط داشته باشیم تا پس از تمام شدن روند اضافه شدن رکوردها، به خروجی پاس  داده شود. این تکه کد را در یک Region به اسم Junior گذاشتم.

حالا ببینیم می شود کمی عاقلانه تر کد نوشت ؟ . فکر کنم با yieldReturn بشود!.  با استفاده از yield return ، یک وضعیت از تولید به مصرف خواهیم داشت. یعنی درست در لحظه ای که رکورد را از مثلن دیتابیس بخوانم، آنرا به بیرون از متد پاس میدهم و سطوح بالاتر کار خود را شروع میکنند و منتنظر پایان و ارسال همه رکوردها نخواهند ایستاد. متد جدید را WiseDataPrepration نامگذاری میکنم. برویم ببینیم چه شکلی میشود.

ضمنن نوع خروجی هم دیگر List نیست و یک IEnumerable است که همین تفاوت هم برای خود جای بحث و بررسی دارد و سبب عاقلانه تر و بهتر شدن کد خواهد شد.

سورس کامل هم که در پایین قابل دانلود است

http://iliasoft.ir/FileUpload/CuteEditor/YeldSample.zip




http://iliasoft.ir/FileUpload/CuteEditor/YeldSample.zip
yieldًreturncsharp
Jack of all trades, master of none
شاید از این پست‌ها خوشتان بیاید