亂蹦亂跳的“for 語句”


之前還真是沒見過這種情況,挺好玩兒的,記錄下來,以防以後遇到出現類似錯誤。

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語句跳來跳去的情況,如果沒有注意到,可能會出現意想不到的事情

或者出現錯誤了,找了一天也找不到錯誤到底在哪裏,會很崩潰滴。

 

發佈了18 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章