C# 迴圈 (C# 教學) – while就是在條件句作立, 即true的情況下, 繼續執行while的block內的邏輯, 直至條件句的結果為false. 其重點在條件句的成立與while 內 BLOCK的重用.
為何要用While
迴圈的重要性在於重用block 內的logic, 免得一直地寫下重覆的code. 而為何while重要呢? 我個人覺得因為它能補助for loop的不足. 有些情況下是用while比for適合的, 例如條件句的variable不是以固定的增距來運作, 又或者是variable不需要Programmer的code來更新等.
四種情況下用while.
- 在一個無限looping內, 用if的條件句(即當到了一定的條件), 就break (跳出迴圈).
- 如個while的條件句內的variable會自動更新, 我就會用, 如while(expiredDate < DateTime.Now).
- 條件句內的varaible需要用while的block內計算出來. 如最近我寫了一個類似textbox的control, 要一個一個字串取讀來計算在touch時textbox中的 cursor 位置, 我就用了這個方法.
- 條件句內的varaible需要用while的block內的datasource, 來取出variable的值. 如在一些IOT的project內, 若取温度或GPS時, 有時是要用Timer加while的, 基於baud rate的關係, 有時取不到, 有時取不完整, 所以有時要再來一次, 直至取到值為止, 當取到温度值後就跳出迴圈.
本篇暫時只以基礎的介紹, 以下為一些例子顯示出while的用法. Let’s Start!
句型 | 次序: |
while (condition) { // code block to be executed } | condition 條件如乎合, 繼續code block to be executed condition 條件如乎合, 繼續code block to be executed …… 直至 condition 條件不乎合, 跳出LOOP |
例子 | |
int a = 2; int b = 3; while (a + b < 20) { a += 2; b += 3; } | 1) a + b = 5, 5 小於 20, 所以條件乎合, 繼續 2) a += 2; b += 3; 3) a + b = 10, 10 小於 20, 所以條件乎合, 繼續 ……. 直至 a + b = 20, 20 等於 20, 條件不乎合, 跳出LOOP |
句型 | 次序: |
do{ // code block to be executed }while (condition); | // code block to be executed condition 條件如乎合, 繼續 //code block to be executed condition 條件如乎合, 繼續 …… 直至 condition 條件不乎合, 跳出LOOP |
例子 | |
int a = 2; int b = 3; do{ a += 2; b += 3; }while (a + b < 20) | 1) a += 2; b += 3; 2) a + b = 5, 5 小於 20, 所以條件乎合, 繼續 3) a += 2; b += 3; 4) a + b = 10, 10 小於 20, 所以條件乎合, 繼續 ……. 直至 a + b = 20, 20 等於 20, 條件不乎合, 跳出LOOP |
其他相關:
C# 條件句 – 學會 if 的基礎用法 – flow 的流程
C# 迴圈 – C# For Loop, For Each 的基礎用法 – 減少程式碼, 用BLOCK把程式碼重用起來
參考資料: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements