PDA

View Full Version : سوال: Returning Enumerators with Yield Return



wolf_majid
یک شنبه 09 تیر 1392, 11:16 صبح
سلام دوستان
اولا" امیدوارم سوالم تکراری نباشه (بدلیل اینکه موس نداشتم و کار با کیبورد سخت بود دیگه جست و جو نکردم)
راستش در مورد کد های زیر چند تا سوال دارم
public class GameMoves
{
private IEnumerator cross;
private IEnumerator circle;
public GameMoves()
{
cross = Cross();
circle = Circle();
}
private int move = 0;
const int MaxMoves = 9;
public IEnumerator Cross()
{
while (true)
{
MessageBox.Show( "Cross, move " +move);
if (++move >= MaxMoves)
yield break;
yield return circle;
}
}
public IEnumerator Circle()
{
while (true)
{
MessageBox.Show("Circle, move "+ move);
if (++move >= MaxMoves)
yield break;
yield return cross;
}
}
}
قسمت فراخوانیش :
var game = new GameMoves();
IEnumerator enumerator = game.Cross();
while (enumerator.MoveNext())
{
enumerator = enumerator.Current as IEnumerator;
}


1- چرا متدها توی سازنده فراخوانی نمیشن ؟
2- چرا متد Cross در خط دوم فراخوانی , اجرا نمیشه ؟
3- چرا با yield return از کلاس خارج میشه و به قسمت while برمیگرده ؟ مگر نه اینه که yield return باید تا زمانیکه به yeild break و یا آخر بلاک برسه ادامه پیدا کنه