PDA

View Full Version : فرق IEnumerable , IEnumerator?



shima_85
یک شنبه 05 مهر 1388, 09:15 صبح
سلام
فرق IEnumerable ,IEnumerator چیست؟
کاربرد آنها کجاست؟چرا به جای استفاده از آنها از لیست های جنریک یا انواع داده ای دیگر استفاده نمی کنیم؟؟

Amir Oveisi
یک شنبه 05 مهر 1388, 12:11 عصر
از روس اسمشون هم میشه متوجه شد،اینجوری تصور کنید که IEnumerator میتونه در طول IEnumerable حرکت کنه. این همون تفاوتشون از نظر مفهمومیه.
از نظر تکنیکی مطgب زیر رو مطالعه کنید:
http://www.codeproject.com/KB/cs/sssienumerable.aspx

موفق باشید

shima_85
یک شنبه 05 مهر 1388, 12:28 عصر
اون صفحه را قبلا خوندم،ولی راستش خوب متوجه نشدم ، که اصلا استفاده از این نوع چه فایده ای داره؟
مگه نمیشه یه list generic استفاده کرد و با foreach به راحتی به عناصرش دسترسی داشت؟

Sajjad1364
دوشنبه 06 مهر 1388, 00:20 صبح
باید گفت که تمامی کلاسهایی که به نحوی شامل یک Collection هستند این دو رابط رو پیاده سازی میکنن . وجود IEnumerable که توسط کلاسها پیاده سازی میشه به اون کلاس این امکان رو میده که بصورت ضمنی و توکار بشه اون شیء رو پیمایش کرد. دقیقا یک آرایه به این دلیل میشه اونو در یه حلقه foreach پیمایش کرد که رابط IEnumerable توسط کلاس System.Array پیاده سازی میشه.
رابط IEnumerator در سطح پایین تری از یک IEnumerable قرار دارد و وظیفه این رابط اینه که عاملیت وتوانایی رو بوجود بیاره که برای بازگرداندن انواع داده در یک تکه کد بدون نیاز به خروج از بدنه متد ، پراپرتی و ... . با استفاده از این رابط میشه مثلا در هرجای بدنه متد اشیایی رو برگشت بدیم در حالیکه مجبور نیستیم تمام نتایج رو مثلا تو آرایه بریزیم بعد اون آرایه رو برگشت بدیم و این در حالی است که هنوز حلقه foreach بین تمامی نتایج پیمایش میکنه و تا وقتیکه داده ای برای بازگشت وجود داره حلقه به پایان نمیرسه.نه اینکه منتظر تمامی نتایج بماند بعد یکدفعه نتایج پیمایش بشوند