程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> VC#2005快速入門之使用while語句

VC#2005快速入門之使用while語句

編輯:關於C#

使用while語句,可以在一個布爾表達式為true的前提下重復運行一個語句。

while語句的語法如下:

while ( booleanExpression )
statement

首先會對布爾表達式進行求值,如果為true,就運行語句,然後再次求值布爾表達式。如果表達式仍為true,就再次運行語句,並再次求值表達式。這個過程會反復進行下去,直到布爾表達式求值為false;屆時,while語句將退出,並從while之後的第一個語句繼續。while語句在語法上與if語句有許多相似的地方(事實上,兩者除了關鍵字不同,語法是完全一樣的):

·表達式必須是一個布爾表達式。

·布爾表達式必須放在圓括號內。

·假如首次求值時,布爾表達式為false,語句不會運行。

·假如想要在一個while的控制下執行兩個或者更多的語句,必須使用大括號將語句分組到一個塊中。

以下while語句向控制台寫入0~9的值:

int i = 0;
while (i != 10)
{
 Console.WriteLine(i);
 i++;
}

所有while語句都應該在某個時候終止。新手常犯的錯誤是忘記添加一個特別的語句,它最終能造成布爾表達式求值為false並終止循環。在上例中,i++;就屬於這種情況。

注意 while循環中的變量i控制著最終的循環次數。這是非常流行的一個表示法,具有這個作用的變量有時也稱為哨兵變量(Sentinel variable)。

在下面的練習中,准備寫一個while循環,它每次從一個源文件中讀取一行內容,並將每一行都寫入一個文本框中。

·使用while語句

1. 在Visual Studio 2005中打開WhileStatement項目,它位於My Documents文件夾下的\Microsoft Press\Visual CSharp Step by Step\Chapter 5\WhileStatement子文件夾中。

2. 選擇“調試”|“開始執行(不調試)”。

Visual Studio 2005將生成並運行這個Windows應用程序。應用程序本身是一個簡單的文本文件查看器,允許你選擇一個文件來顯示它的內容。

3. 單擊“Open File”(打開文件)按鈕。

隨後會出現“打開”對話框

4. 切換到My Documents文件夾下的\Microsoft Press\Visual CSharp Step by Step\ Chapter 5\WhileStatement\WhileStatement子文件夾。

5. 選中Form1.cs文件,再單擊“打開”。

文件名Form1.cs會在小的文本框中顯示,但文件的內容沒有在大文本框中顯示。這是由於我們還沒有實現相應的代碼來讀取源文件的內容,並在大文本框中顯示那些內容。下面的步驟將添加這個功能。

6. 關閉窗體,返回Visual Studio 2005。

7. 在“代碼和文本編輯器”窗口中顯示文件Form1.cs的代碼,找到openFileDialog_FileOk方法。

用戶在“打開”對話框中選擇了一個文件,並在單擊“打開”按鈕之後,調用該方法。方法的主體目前是:

string fullPathname = openFileDialog.FileName;
FileInfo src = new FileInfo(fullPathname);
filename.Text = src.Name;
/* add while loop here */

第一個語句聲明了一個字符串變量,名為fullPathname,並把它初始化為openFileDialog對象的FileName屬性。該語句將fullPathname初始化為“打開”對話框中選擇的源文件的完整名稱(包括路徑)。

注意 openFileDialog對象是可以從“工具箱”中選取的OpenFileDialog組件的一個實例。利用這個組件提供的方法,你可以向用戶顯示一個標准的Windows“打開”對話框,讓用戶從中選擇一個文件,並獲取所選文件的名稱和路徑。

第二個語句聲明了一個名為src的FileInfo變量,並把它初始化成代表“打開”對話框中所選文件的一個對象(FileInfo是Microsoft .NET Framework提供的一個類,可利用它對文件進行各種處理)。

第三個語句將src變量的Name屬性賦給filename控件的Text屬性。src變量的Name屬性包含了在“打開”對話框中選定的文件名(但無路徑信息)。通過此次賦值,文件名會在Windows窗體的filename組件中顯示。

8. 將/* add while loop here */注釋替換成以下語句:

source.Text = "";

source字段是窗體上最大的文本框。把它的Text屬性設置成空字符串(""),就可以清除當前顯示的任何文本。

9. 在剛才在openFileDialog_FileOk方法中添加的那一行語句之後,輸入以下語句:

TextReader reader = src.OpenText();

該語句聲明了一個名為reader的TextReader變量 (TextReader是.NET Framework提供的另一個類,它用於從文件這樣的來源中讀取字符流。該類位於System.IO命名空間中)。OpenFileDialog類提供了OpenText方法,它用於打開用戶在“打開”對話框中選擇的文件。OpenText方法返回的是一個TextReader對象。上述語句的作用就是將reader初始化為從src.OpenText方法調用中返回的TextReader對象。現在,可以使用reader變量來讀取用戶選擇的文件中的內容。

10. 在添加到openFileDialog_FileOk方法的上一行語句之後,接著輸入以下語句:

string line = reader.ReadLine();
while (line != null)
{
 source.Text += line + '\n';
 line = reader.ReadLine();
}
reader.Close();

上述代碼聲明了一個名為line的string變量,它用於容納reader從文件中讀取的每一行文本。語句調用reader.ReadLine方法從文件中讀取第一行文本。該方法要麼返回下一行文本,要麼返回一個名為null的特殊值(如果沒有更多的行可供讀取)。這個調用的結果將賦給line變量。

while循環開頭的布爾表達式檢查line變量的值。如果不為null,循環主體就顯示讀取的文本行,具體的做法是將該行附加到名為source的TextBox控件的Text屬性尾部,並在最後添加一個換行符('\n')。TextReader對象的ReadLine方法在讀取每一行的時候,會自動剝除換行符,所以需要重新添加這個換行符。隨後,while循環將讀取下一行文本(這是循環的“更新”語句),然後執行下一次重復。

循環結束後,調用extReader對象的Close方法來關閉文件。

提示 熟悉C#語法之後,你會發現while循環中的代碼能縮寫成下面這樣:

string line;
while ((line = reader.ReadLine()) != null) { source.Text += line + '\n'; }
reader.Close();

在這種情況下,循環開頭的布爾表達式同時還要執行初始化和更新操作。其中將調用ReadLine方法,並將返回值賦給line變量。然而,賦值語句實際會生成一個值——要賦值的表達式的值。所以,可以使用一個關系操作符來比較一個賦值表達式的結果,並最終生成一個布爾結果。在這個例子中,如果所賦的值為null,賦值表達式的值就是null,與null值比較的結果將為true。

11. 選擇“調試”|“­開始執行(不調試)”。

12. 單擊“Open File”按鈕,隨後會出現“打開”對話框。

13. 切換到My Documents文件夾中的\Microsoft Press\Visual CSharp Step by Step\ Chapter 5\WhileStatement\WhileStatement子文件夾,選擇Form1.cs文件,並單擊 “打開”。

這一次,所選文件的內容將在文本框中完整地顯示出來,如圖1所示。

圖1 文本框中完整顯示所選文件的內容

14. 在文本框中找到openFileDialog_FileOk方法。驗證該方法已經包含剛才所添加的代碼。

15. 關閉窗體。

返回Visual Studio 2005編程環境。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved