سلام دوست خوبم ؛ امیدوارم حالتون خوب باشه .
ببینید با یک مثال ساده توضیحش می دم : وقتی که شما با استفاده از یک حلقه 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 به بالا رو باید انتخاب کرده باشید
البته بحث در رابطه با این رابطه مفصله و در این تاپیک نمی گنجه