程式最方便的功能之一就是可以使用特定的描述完成反覆的事情,而這種能力就叫做迴圈(LOOP)。反覆重複陳述式直到特定的次數、或者終止的條件,除非遇到跳躍陳述,否則將會依照規則順序執行。這些相關的關鍵字有這些:for、foreach、in、do、while、continue、break、goto、return。這篇將會看看如何組合應用。
- do–while:
do–while 實際上是用 do 關鍵字與 while 組合起來的迴圈用法,不同於 while 的地方是 無論條件成立與否都會執行一次。void Start () { int x = 5; do { Console.WriteLine(x); x++; } while (x < 5); }
Output: 5 之後停止。
- while:
while 以條件為優先做判斷,決定何時停止迴圈執行。void Main() { int n = 0; while (n < 5) { Console.WriteLine(n); n++; } }
Output: 0~4 之後停止。
- for:
for 迴圈可以下的條件參數較多,以(起始值;範圍值;迭代值)組成,立變數i
的起始值。 不論迴圈重複幾次,此步驟只會發生一次。再以範圍值評估條件 (i <= X),i 值會與 X 進行比較,成立則繼續運作。接著利用迭代值使 i 超過範圍停止迴圈。void Main() { for (int i = 1; i <= 5; i++) { Console.WriteLine(i); } }
Output: 1~5 之後停止。
- foreach–in:
foreach 則必須搭配 in 關鍵字使用,簡單說他是一種簡化版的for 迴圈,有可以遍歷集合項目的特點,但僅提供讀取禁止修改主體元素。int[] nums= new int[] { 0, 1, 3, 5, 6, 8, 10, 13 }; foreach (int num in nums) { System.Console.WriteLine(num); }
跳躍陳述式:利用以下關鍵字可讓程式控制立即轉移。
- break:
之前 switch–case 中使用過 break 關鍵字,不過 break 也可以拿來中斷 for、while 迴圈。
void Main() { for (int i = 1; i <= 1000; i++) { if (i == 5) { break; } Console.WriteLine(i); } }
- continue:
continue 則是另一種打斷迴圈的方式,只是在打斷後還會繼續執行下一圈。void Main() { for (int i = 1; i <= 10; i++) { if (i < 5) { continue; } Console.WriteLine(i); } }
- goto:
goto 陳述式會將程式控制權直接轉移到標記陳述式。跳轉至預設的標籤可以讓一組包覆極為複雜的迴圈立刻解放。標籤用字組加上 : 來定義。void Start () { int n = 0; while (n < 60) { if(n == 50) goto Found; n++; } Found: Console.WriteLine(n); }
- return:
return 陳述式除了之前提到可以傳回值以外,如果方法是 void 類型,則省略 return 陳述式。它也會終止執行在其中出現的方法,並且將控制權轉給方法本身。void Update () { if (Input.anyKey) { print(Input.inputString); } else return; print("GO~"); }
以UNITY的 Update舉例的話,除非按下按鍵否則最後一行的 GO~ 不會被印出來,會直接回到Update的開始繼續執行。