之前還真是沒見過這種情況,挺好玩兒的,記錄下來,以防以後遇到出現類似錯誤。
for語句 再常用不過,不過看看下面的例子,猜猜看結果。
static class Program
{
static void Main( string [] args)
{
List<string> stringList = new List<string>();
stringList.Add("I");
stringList.Add("Love");
stringList.Add("You");
for (int i = 0; i < stringList.Count; i++)
{
stringList.RemoveAt(i);
}
if (stringList.Count > 0)
{
Console.WriteLine("剩餘元素個數爲" + stringList.Count + ",元素分別爲:”");
foreach (string item in stringList)
{
Console.Write(item + " ");
}
}
else
{
Console.WriteLine("已刪除所有的元素!");
}
Console.Read();
}
}
運行結果:
發現"Love"被留下來了,沒有移除
出現這個中情況是因爲,for循環的時候,i=0時,執行一次操作,stringlist的count就減少一個;
所以出現
原本是:stringlist[0]="I" stringlist[0]="Love" stringlist[0]="You"
i=0時;執行一次後;stringlist[0]="Love" stringlist[1]="You"
此時 i=1;所以移除 " You"
因此 把“Love”留了下來!
這種for語句跳來跳去的情況,如果沒有注意到,可能會出現意想不到的事情
或者出現錯誤了,找了一天也找不到錯誤到底在哪裏,會很崩潰滴。