PDA

View Full Version : مشکل با Current در GetEnumerator



Mojgan110
سه شنبه 07 آذر 1385, 15:55 عصر
من یه کد نوشتم که اجرا هم میشه ها ، ولی وقتی اجرا شد ، بعدش روی شرطه While ، خطا میگیرد و میگوید که Enumaration Already Finished . چرا ؟http://x5.freeshare.us/122fs4538886.gif کدم را چیکار کنم که درست بشه ؟


string str = "SalaM";
char c='c';
CharEnumerator ce= str.GetEnumerator();
ce.MoveNext();
while ((c = ce.Current) != null)
{
Console.Write(" " + c + " ");
ce.MoveNext();
}

PC2st
سه شنبه 07 آذر 1385, 20:11 عصر
خوب، در واقع کدهای داخل while بدون در نظر گرفتن اینکه امکان دارد کاراکترهای داخل ce روزی به پایان برسد، همواره ادامه پیدا میکند. باید شرط داخل دستور while را تغییر دهید و یکسری تغییرات دیگه، که میشه از روشهای مختلفی این کار رو انجام داد و یکی از روشهاش به صورت زیر است:



string str = "SalaM";
int i = 0;
CharEnumerator ce = str.GetEnumerator();
ce.MoveNext();
while(i < str.Length)
{
Console.Write(" " + ce.Current + " ");
ce.MoveNext();
i++;
}
Console.ReadLine();