0 امتیاز
قبل در برنامه نویسی توسط (505 امتیاز)
IEnumerable در C# یعنی چی؟

چه مواقعی به کار می رود؟

لطفا مثالی از این نوع ذکر کنید.

2 پاسخ

0 امتیاز
قبل توسط (760 امتیاز)
زمانی ما از اینترفیس IEnumerable استفاده می کنیم که بخواهیم یک موجودیت رو قابل شمارش کنیم!

خب ما یه دیس داریم! و چند هندوانه! برای شمارش این هندوانه ها باید یک قانونی بذاریم که زمانی که یکی برداشتیم عدد 1 رو یجا بنویسیم (Count) ، یا اگه خواستیم از نو بشماریم (Reset), یا یجورایی شرط خاطمه پذیری رو هم داشته باشیم که این سینی چندتا هندوانه جا میگیره؟ آیا بازم جا داره؟ (MoveNext)

اگر کدی ازش گیر آوردم حتما" در اختیارتون میگذارم
قبل توسط (505 امتیاز)
+1
لطفا استفاده عملیشو  در برنامه نویسی توضیح دهید
0 امتیاز
قبل توسط (190 امتیاز)

سلام دوست خوبم ؛ امیدوارم حالتون خوب باشه . 

ببینید با یک مثال ساده توضیحش می دم : وقتی که شما با استفاده از یک حلقه foreach بین اعضای یک آرایه حرکت می کنید به راحتی می تونید به تک تک اعضای یک مجموعه دسترسی داشته باشید.خوب چرا این رفتارو داره ؟ چرا واسه کلاس هایی که خودمون می سازیم نم تونیم از حلقه foreach استفاده کنیم ؟ دلیلش اینه که نوع آرایه ( از هر نوعی که می خواد باشه فقط آرایه باشه ! ) رابطه IEnumerable رو پیاده سازی میکنه ، این رابطه یک متد داره به نام GetEnumerator که از طریق این متد می تونیم به شی enumerator دسترسی داشه باشیم . این شی وظیفه این رو داره که تکتک اعضای یک مجموعه رو واسه ما بر گردونه . پس یک کاربرد این رابطه واسه قابل شمارش کردن یک مجموعه به کار میره . البته در نسخه های جدید سی شارپ از Iterator ها استفاده میشه که خودشون این دو رابطه رو به طور اتوماتیک واستون پیاده سازی میکنه.

 

رابط IEnumerable همانطور که گفتم برای قابل شمارش کردن یک مجموعه به کار میره . این رابطه بسیار در Query گرفتن با استفاده از تکنولوژی محبوب Linq کاربرد داره . من یک مثال واستون می زنم : 

string[] stringArray = { "maryam", "amin", "mohsen", "darab" };
            IEnumerable<string> queryResult = from item in stringArray
                                              select item;
            foreach (string item in queryResult)
            {
                System.Console.Write(item + " ");
            }

            System.Console.ReadLine();

** چون در مثال بالا از Linq استفاده شده شما برای ستت باید NetFramework 3.5 به بالا رو باید انتخاب کرده باشید

البته بحث در رابطه با این رابطه مفصله و در این تاپیک نمی گنجه

سوالات مشابه

0 امتیاز
1 پاسخ 2.2هزار بازدید
+1 امتیاز
1 پاسخ 291 بازدید
0 امتیاز
0 پاسخ 662 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط alinaseri (0 امتیاز)
+1 امتیاز
1 پاسخ 570 بازدید
0 امتیاز
1 پاسخ 1.0هزار بازدید
0 امتیاز
0 پاسخ 278 بازدید
0 امتیاز
0 پاسخ 406 بازدید
...