while和for語句都在循環開始的時候測試它們的布爾表達式。這意味著假如在首次測試時,布爾表達式就求值為false,那麼循環主體一次都不會運行。do語句則不同,它的布爾表達式是在每次重復之後求值的,所以主體至少會執行一次。
do語句的語法如下(不要忘記最後的分號):
do statement while (booleanExpression);
如果循環主體由多個語句構成,請使用一個語句塊。下面是在控制台上輸出0~9的那個例子的do語句版本:
int i = 0; do { Console.WriteLine(i); i++; } while (i != 10); break和continue語句 在前文我們曾用break語句來跳出switch語句。除此之外,還可以使用break語句來跳出一個循環。執行break之後,系統會立即終止循環,並從循環之後的第一個語句繼續執行。在這種情況下,循環的“更新”和“繼續”條件都不會重新判斷。 與此相反,continue語句會造成當前循環結束,並立即開始下一次循環(在對布爾表達式進行重新求值之後)。下面是在控制台上輸出0~9的那個例子的另一個版本,這一次將使用break和continue語句: int i = 0; while (true) { Console.WriteLine("continue " + i); i++; if (i != 10) continue; else break; } 這段代碼看起來讓人非常難受。許多編程指南都建議小心使用continue,或者根本不要使用它,否則很容易造成難以理解的代碼。continue的行為也令人捉摸不定。例如,假如在一個for語句中執行continue,那麼會在運行了for語句的“更新”部分之後,才開始下一次循環。
在下面的例子中,我們將寫一個do語句來將一個數字轉換成字符串形式。
·使用do語句
1. 在Visual Studio 2005中打開DoStatement項目,它位於My Documents文件夾下的\Microsoft Press\Visual CSharp Step by Step\Chapter 5\DoStatement子文件夾中。
選擇“調試”|“開始執行(不調試)”。
Visual Studio 2005將開始生成並運行Windows應用程序。
應用程序將顯示一個窗體,其中包含兩個文本框和一個Show Steps(顯示步驟)按鈕。在上方的文本框中輸入一個正數(我們使用的算法還不支持負數),然後單擊Show Steps按鈕,下方的文本框就會顯示創建這個數字的字符串形式所需的步驟。
注意 這個簡單的例子展示了如何使用do循環將數字轉換成字符串。但要注意一點,.NET Framework提供了Convert.ToString方法來做同樣的事情。在自己的應用程序中執行類似任務時,應該使用該方法。
2. 作為一個例子,請在上方的文本框中輸入2693,然後單擊Show Steps按鈕。
在下方的文本框中,將顯示創建2693的字符串形式所經歷的步驟,如圖2所示。
圖2 單擊Show Steps按鈕之後將顯示具體步驟
3. 關閉窗口,返回Visual Studio 2005編程環境。
4. 在“代碼和文本編輯器”窗口中顯示Form1.cs的代碼。
找到showSteps_Click方法。該方法會在用戶單擊了Show Steps按鈕之後開始運行。
5. 該方法包含以下語句:
int amount = System.Int32.Parse(number.Text); steps.Text = ""; string current = ""; do { int digitCode = '0' + amount % 10; char digit = Convert.ToChar(digitCode); current = digit + current; steps.Text += current + "\r\n"; amount /= 10; } while (amount != 0);
注意 \r代表一個回車符。在多行文本框控件中輸出文本時,需要同時輸出一個回車符和一個換行符,才能跳到下一行,並使光標定位到行首。否則,以後輸出的文本將出現在同一行上。
第一個語句使用System.Int32類的Parse方法,將number文本框的Text屬性中存儲的字符串值轉換成int值:
int amount = System.Int32.Parse(number.Text);
第二個語句清除下方的文本框(稱為steps)中顯示的文本,這一次的做法是將Text屬性設為一個空字符串:
steps.Text = "";
第三個語句聲明一個名為current的字符串變量,並把它初始化為空字符串:
string current = “";
這個方法真正的工作是由do語句來執行的,它從第4個語句開始: