PDA

View Full Version : سوال: منطق کاری foreach در کلاسی که IEnumerable, IEnumerator را پیاده سازی میکند



amirjalili
سه شنبه 23 شهریور 1389, 11:25 صبح
با سلام خدمت دوستان.
من منطق foreach رو در کد زیر نمیفهمم. کلاس ما IEnumerable, IEnumerator رو پیاده سازی کرده و متد های movenext , getenumrator و مشخصه Current رو پیاده کرده. حالا میخوام ببینیم کد زیر هیچ کدوم از متد های ذکر شده رو فراخوانی نکرده و فقط کاری که انجام میدن رو پیاده کرده یعنی متد ها اجرا نشده. movenext اجرا نشده و همینطور بقیه . اما foreach به عناصر دسترسی پیدا میکنه. چطوری؟



static void Main()
{
Rainbow MyRainbow = new Rainbow();
foreach (string ColorName in MyRainbow)
{
Console.WriteLine(ColorName);
//Console.WriteLine((int)season.bahar * (int)season.tabestan);
}
Console.ReadLine();
}
}

class Rainbow : IEnumerable, IEnumerator
{
private short IteratorIndex = -1;
public IEnumerator GetEnumerator()
{
return this;
}
public object Current
{
get
{
switch (IteratorIndex)
{
case 0:
case 1:
return "Orange";
case 2:
return "Yellow";
case 3:
return "Green";
case 4:
return "Blue";
case 5:
return "Indigo";
case 6:
return "Violet";
default:
return "*** ERROR ***";
}
}
}
public bool MoveNext()
{
IteratorIndex++;
if (IteratorIndex == 7)
{
return false;
}
else
{
return true;
}
}
public void Reset()
{
IteratorIndex = -1;
}
}

amirjalili
سه شنبه 23 شهریور 1389, 13:46 عصر
به جهت بالا آمدن پست