X
تبلیغات
پیکوفایل
رایتل

در مقاله قبل آموختیم که کلاسی که IEnumberator را اعمال  می کند قادر به پیمایش رکورد به رکورد داده ها توسط یک حلقه While می باشد ، داشتن  خاصیت Current برای مشخص نمودن آیتم جاری ،متد MoveNext برای حرکت به آیتم بعدی و متد Reset برای ریست نمودن پیماینده شاخص های آن می باشند .

در صورتی که یک List  کل اطلاعات را در بر دارد و در صورت زیاد بودن رکورد ها قادر به پیمایش آن نخواهد بود . بنابراین IEnumerator برای پیمایش رکورد ها با حجم زیاد بسیار مناسب خواهد بود چرا که اطلاعات را تک به تک پیمایش کرده و هر بار یک رکورد را در حافظه قرار می دهد .

 

اکنون می خواهم در ادامه مطلب فوق در مورد IEnumerable Inteface صحبت کنم .این اینترفیس متد

GetEnumerator را در اختیار ما قرار می دهد و پارامتر برگشتی این متد از نوع همان اینترفیس IEnumberator  است در واقع کلاس ما را قابل پیمایش می کند تا بتوانیم حلقه foreach  را در مورد کلاسمون بکار ببریم . فرم کلی بصورت زیر است :



اکنون یک مثال را با هم مرور می کنیم فرض کنید کلاس داریم به نام ColorEnumerator این کلاس از اینترفیس IEnumerator  ارث بری می کند این کلاس یک رشته از رنگها را در بر می گیرد ، چون اینترفیس IEnumerator  را بر روی آن مطابق شکل زیر اعمال کردیم پس قابل پیمایش می باشد .



اکنون ما کلاسی دیگر ایجاد می کنیم که از اینترفیس IEnumerable  وراث دارد ، این کلاس در متد GetEnumerator پارمتری از نوع کلاس بالا برمی گرداند مطابق شکل زیر :



حال این کلاس ما در برنامه براحتی می توانیم حلقه foreach  را برای پیمایش اعضای آن استفاده کنیم .

مطابق شکل زیر :


فرض کنیم کلاسی داشته باشیم که مشخصات پرسنل سازمانی را نشان می دهد ، سپس توسط توایعی لیست فرضا از هزار پرسنل سازمان را تولید کنیم ، ما اکنون می خواهیم بر روی این لیست پرسنل پیمایش کنیم ، راه حل ساده است باید کلاس پرسنل خودتان را بوسیله

Enumerators and Enumerable اعمال کنید .