C#程序設(shè)計(jì)-全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第1頁(yè)
C#程序設(shè)計(jì)-全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第2頁(yè)
C#程序設(shè)計(jì)-全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第3頁(yè)
C#程序設(shè)計(jì)-全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第4頁(yè)
C#程序設(shè)計(jì)-全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第5頁(yè)
已閱讀5頁(yè),還剩375頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、121世紀(jì)高等院校計(jì)算機(jī)系列教材C# 程 序 設(shè) 計(jì)2第1章 C#背景知識(shí)1.1 C#的歷史1.2 Microsoft .NET框架1.3 什么是程序1.4 編程原則1.5 編程陷阱1.6 小結(jié)31.1 C的歷史1960年前后,一種名為Algol 60 的程序設(shè)計(jì)語(yǔ)言誕生了。大約在1970年,B語(yǔ)言被改寫成C語(yǔ)言。大約在1980年,Stroustrup創(chuàng)建了C+。 Microsoft在2002年宣告了C#語(yǔ)言的誕生。41.2 Microsoft.NET框架 Microsoft在2002年推出一個(gè)名為.NET框架的新主流產(chǎn)品。其主要特性有:包括編程語(yǔ)言C#、Visual Basic和C+。具有幫

2、助程序員創(chuàng)建交互網(wǎng)站的實(shí)用工具。.NET也可用于其他操作系統(tǒng)。它允許構(gòu)建由組件(“對(duì)象”)組成的軟件,并且可以在網(wǎng)絡(luò)上發(fā)布。51.3 什么是程序 本節(jié)告訴讀者程序是什么。舉一個(gè)簡(jiǎn)單的程序例子:弄濕頭發(fā)倒一點(diǎn)洗發(fā)水用洗發(fā)水揉搓頭發(fā)清洗頭發(fā) 這個(gè)程序闡明了程序是要執(zhí)行的指令序列,從第一條指令開始,逐條執(zhí)行,直到指令序列結(jié)束。 返回目錄6 概括地說(shuō),程序是計(jì)算機(jī)自動(dòng)執(zhí)行的一系列指令。程序由以下部分組合而成:順序。循環(huán)。選擇。方法?,F(xiàn)有對(duì)象。自己編寫的對(duì)象。 所有現(xiàn)代程序設(shè)計(jì)語(yǔ)言都具有這些特性。71.4 編程原則程序由指令組成,這些指令結(jié)合了順序、選擇、循環(huán)和子任務(wù)這些概念。利用現(xiàn)有組件可簡(jiǎn)化編程任務(wù)

3、。81.5 編程陷阱人為錯(cuò)誤可以帶入到程序中,例如,指令順序錯(cuò)誤、邏輯錯(cuò)誤、書寫錯(cuò)誤。91.6 小結(jié)C#是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它源于C+和Java。Microsoft的.NET框架是一個(gè)主流產(chǎn)品,它可以使用C#、C+和Visual Basic語(yǔ)言。程序是計(jì)算機(jī)自動(dòng)執(zhí)行的一系列指令。當(dāng)前編程實(shí)踐的主要趨勢(shì)是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)方法,C#完全支持該方法。10第2章 C#開發(fā)環(huán)境2.1 簡(jiǎn)介2.2 安裝與配置 2.3 創(chuàng)建第一個(gè)程序 2.4 設(shè)計(jì)時(shí)控件2.5 事件和Button控件 2.6 打開一個(gè)現(xiàn)有工程 2.7 屬性設(shè)置的文檔化 2.8 程序錯(cuò)誤 112.9 編輯器工具 2.10 消息

4、對(duì)話框 2.11 幫助 2.12 編程原則 2.13 編程陷阱 2.14 語(yǔ)法點(diǎn) 2.15 新的語(yǔ)言元素 2.16 新的IDE工具 2.17 小結(jié) 122.1 簡(jiǎn)介 本書中使用IDE表示C#集成開發(fā)環(huán)境。正如字處理程序提供創(chuàng)建文檔的工具一樣,IDE提供創(chuàng)建(開發(fā))程序的工具。IDE集成了用戶所需的全部工具,因此可以在它的內(nèi)部完成全部工作,而無(wú)須再借助其他程序。IDE提供了一個(gè)完全的編程環(huán)境。 本章將討論Microsoft的IDE,也可以從其他來(lái)源得到C#的IDE。 132.2 安裝與配置 Microsoft提供兩類產(chǎn)品,使用它們均能創(chuàng)建C# .NET程序:Visual Studio .NET系

5、統(tǒng),該系統(tǒng)還包括其他語(yǔ)言。C# .NET系統(tǒng),只包括C#。 無(wú)論使用哪個(gè)系統(tǒng),都需要遵循相應(yīng)的安裝程序。142.3 創(chuàng)建第一個(gè)程序首先使用Windows Explorer創(chuàng)建一個(gè)工作目錄,然后將以后所建立的工程文件全部保存這個(gè)目錄中,統(tǒng)一進(jìn)行管理。操作步驟:運(yùn)行IDE集成開發(fā)環(huán)境。出現(xiàn)Start Page。單擊New Project按鈕。將出現(xiàn)New Project窗口。單擊Windows Application。為該工程指定一個(gè)存儲(chǔ)位置,并為它命名。需要提供一個(gè)名稱,它將成為一個(gè)文件夾的名稱。注意,該名稱只能由字母、數(shù)字和空格組成。這里選擇First Hello。接下來(lái)需要定位First H

6、ello文件夾。IDE會(huì)記住你將所做的工作存儲(chǔ)在哪里,但創(chuàng)建第一個(gè)工程的時(shí)候,需要單擊Browse按鈕。這時(shí)打開一個(gè)Project Location窗口。找到你將存儲(chǔ)所有C#工作成果的文件夾(這里是C#Projects)并單擊OK按鈕。在Project Location窗口,單擊Open按鈕。從現(xiàn)在開始,IDE將把所有新建的工程文件夾存儲(chǔ)在C# Projects文件夾中。最后,在New Project窗口中單擊OK按鈕。 152.4 設(shè)計(jì)時(shí)控件什么是控件?控件是顯示在屏幕上的“小配件”,用來(lái)顯示信息、允許用戶交互或身兼這兩個(gè)功能。 162.5 事件和Button控件 事件:例如鼠標(biāo)單擊、雙擊或

7、懸停在某個(gè)控件上這都是事件。也有很多事件不是由用戶生成的,例如,一個(gè)網(wǎng)頁(yè)在結(jié)束下載時(shí)發(fā)出的通知,也是一個(gè)事件。Button控件:使用按鈕控件,可以觸發(fā)按鈕事件,然后執(zhí)行一系列的指令集。172.6 打開一個(gè)現(xiàn)有工程 要重新打開以前創(chuàng)建的工程,請(qǐng)保存并關(guān)閉正在使用的當(dāng)前工程,并進(jìn)入Start Page。它顯示最近的工程。要打開一個(gè)最近的工程,只需單擊工程名稱。182.7 屬性設(shè)置的文檔化 本書中提供一些控件的設(shè)置。對(duì)于少數(shù)幾個(gè)屬性而言,可以用幾個(gè)句子來(lái)解釋它們。如果屬性數(shù)量很多,就需要使用表來(lái)表示。通常有很多控件,而每個(gè)控件又有很多屬性,每個(gè)屬性有一個(gè)或者幾個(gè)值。 192.8 程序錯(cuò)誤 每個(gè)人在編

8、程之初都會(huì)面對(duì)大量的編譯錯(cuò)誤。這是學(xué)習(xí)過程的一個(gè)必經(jīng)階段。編譯錯(cuò)誤列在Task List窗口中,該窗口在代碼下方打開。在輸出窗口中雙擊錯(cuò)誤將帶你到代碼中出錯(cuò)的地方,并在那里改正錯(cuò)誤。只有改正全部編譯錯(cuò)誤之后,程序才能運(yùn)行。 202.9 編輯器工具 編輯器的一些工具:標(biāo)準(zhǔn)的剪切板剪切、復(fù)制和粘貼。編寫較大程序的控件和事件。 通過插入其他的空格來(lái)縮進(jìn)鍵入的某些行。每一類控件都有一組不同的屬性。 將目前不使用的代碼段壓縮為一行代碼。 返回目錄212.10 消息對(duì)話框 消息對(duì)話框是用來(lái)給用戶提示一些信息或者提示一些信息由用戶進(jìn)行選擇判斷,然后程序根據(jù)用戶做出的選擇,繼續(xù)執(zhí)行下去。消息對(duì)話框不在工具箱中

9、,它只在需要的時(shí)候彈出。222.11 幫助 C#具有一個(gè)大型的幫助系統(tǒng),它包含的信息對(duì)你很有幫助。(當(dāng)在編寫程序代碼時(shí),如果想對(duì)某一個(gè)函數(shù)具體了解時(shí),可以將光標(biāo)移動(dòng)到這個(gè)函數(shù)上,然后按F1鍵,這時(shí)就會(huì)出現(xiàn)相應(yīng)的函數(shù)幫助,在這之前必須安裝MSDN幫助文檔。) 232.12 編程原則在設(shè)計(jì)時(shí)在窗體上放置控件。在設(shè)計(jì)時(shí)設(shè)置控件的屬性。程序可以在運(yùn)行時(shí)改變屬性。當(dāng)事件(比如單擊按鈕)發(fā)生時(shí),C#系統(tǒng)使用匹配的方法。在該方法中放置代碼以處理此事件。242.13 編程陷阱在試圖修改窗體或代碼之前忘記中止運(yùn)行程序?;煜O(shè)計(jì)時(shí)窗體和運(yùn)行時(shí)窗體。設(shè)計(jì)時(shí)窗體上具有網(wǎng)格點(diǎn)。在需要的地方忘記使用大寫字母或分號(hào) 。25

10、2.14 語(yǔ)法點(diǎn)在C#代碼中,通過控件的名稱來(lái)引用控件的屬性,格式是在控件名后加一個(gè)點(diǎn),點(diǎn)后面是屬性名,如下所示: label1.Text方法的形式如下: private void . 在花括號(hào)中放入指令。消息對(duì)話框不是放置到窗體上的,使用下面的代碼顯示一個(gè)消息對(duì)話框: MessageBox.Show(Some text you choose);262.15 新的語(yǔ)言元素屬性、方法和事件的介紹 272.16 新的IDE工具 程序包含在工程中。IDE創(chuàng)建文件夾以包含工程需要的文件??梢砸苿?dòng)窗體上的控件或調(diào)整它的大小。工具箱包含一系列控件。單擊鼠標(biāo)右鍵可允許用戶選擇控件的屬性。在設(shè)計(jì)時(shí)雙擊控件將創(chuàng)

11、建事件處理方法。一個(gè)解決方案可以包含多個(gè)工程。通常,在一個(gè)解決方案中只放入一個(gè)工程。IDE能夠格式化(縮排)代碼。當(dāng)鍵入控件名之后,可設(shè)置IDE以列出屬性。282.17 小結(jié) 編程的部分任務(wù)是在窗體上放置控件,并設(shè)置它們的初始屬性。C#的IDE簡(jiǎn)化了此項(xiàng)任務(wù),除了閱讀它的使用方法之外,還需要練習(xí)使用IDE。29第3章 圖形簡(jiǎn)介3.1 簡(jiǎn)介3.2 對(duì)象、方法、屬性和類的類比 3.3 第一次繪圖 3.4 創(chuàng)建程序 3.5 圖形坐標(biāo)系統(tǒng) 3.6 解釋程序 3.7 繪圖方法 3.8 顏色 303.9 順序概念和語(yǔ)句 3.10 使用注釋來(lái)添加含義 3.11 編程原則 3.12 編程陷阱 3.13 語(yǔ)法要

12、點(diǎn) 3.14 新的語(yǔ)言元素 3.15 新的IDE工具 3.16 小結(jié) 313.1 簡(jiǎn)介 計(jì)算機(jī)圖形:既可以是由計(jì)算機(jī)生成的好萊塢影片,也可以是一個(gè)復(fù)雜的視頻游戲,一個(gè)虛擬的現(xiàn)實(shí)環(huán)境,顯示器上一個(gè)圖形樣式的靜態(tài)圖像,或一個(gè)由線條構(gòu)建的簡(jiǎn)單圖像。323.2 對(duì)象、方法、屬性和類的類比 在C#中,new用來(lái)為程序員提供將要使用的新建對(duì)象。使用方法在術(shù)語(yǔ)上稱為“調(diào)用”方法。除了方法,對(duì)象還具有屬性。不能調(diào)用屬性 。333.3 第一次繪圖 現(xiàn)在創(chuàng)建一個(gè)單擊按鈕時(shí)在圖片框中顯示兩個(gè)矩形的程序。下面是代碼清單:private void button1_Click(object sender, System.

13、EventArgs e) Graphics paper; paper = pictureBox1.CreateGraphics(); Pen pen = new Pen(Color.Black); paper.DrawRectangle(pen, 10, 10, 100, 50); paper.DrawRectangle(pen, 10, 75, 100, 100);343.4 創(chuàng)建程序 基本步驟如下:進(jìn)入C# IDE。創(chuàng)建一個(gè)新的Windows Application工程。按上面的方法設(shè)置工程選項(xiàng)。在窗體上添加一個(gè)按鈕和一個(gè)圖片框。單擊圖片框,將它的Size屬性改為150,200。將圖片框的

14、BackColor屬性改為合適的顏色。如果需要,可以改變窗體標(biāo)題的文字。雙擊按鈕并插入繪圖指令。 353.5 圖形坐標(biāo)系統(tǒng) C#圖形是基于像素的。像素是屏幕上的小點(diǎn),可以用來(lái)設(shè)置特定的顏色。每個(gè)像素都由從零開始的一對(duì)數(shù)字(坐標(biāo))來(lái)標(biāo)識(shí):水平位置,在C#文檔中稱為x。該值從左向右遞增。垂直位置,經(jīng)常稱為y,該值從上向下遞減。 363.6 解釋程序 這里只解釋這幾行代碼。Graphics paper;paper = pictureBox1.CreateGraphics();Pen pen = new Pen(Color.Black);第1行選擇繪圖區(qū)的名稱。第2行將繪圖區(qū)鏈接到在窗體上添加的圖片框

15、。第3行為畫筆命名。 373.7 繪圖方法 與繪制矩形一樣,C#還提供了繪制一系列形狀的工具。例如:線條。橢圓(即卵形)也包括圓形。實(shí)心矩形和橢圓。來(lái)自文件的圖像。383.8 顏色 在C#中,大約有150種命名的顏色。下面列舉一些主要的顏色和一些罕用的顏色:Black Violet BlueIndigo Green YellowOrange Red GrayPurple White FirebrickLemonChiffon Maroon OliveDrab393.9 順序概念和語(yǔ)句 當(dāng)程序中有很多語(yǔ)句時(shí),它們按從屏幕的頂部到底部的順序來(lái)執(zhí)行。 通常,C#程序由一系列的語(yǔ)句構(gòu)成。語(yǔ)句有很多種類

16、型,比如方法調(diào)用或賦值語(yǔ)句。有些語(yǔ)句只占一行,但其他(比如if和while,不久就會(huì)看到)語(yǔ)句需要涵蓋數(shù)行。403.10 使用注釋添加含義 在C#中,可以為指令添加注釋(一種注解),方法是使用/或使用/* . */。最簡(jiǎn)單的方法是在注釋前使用/,注釋可以包含任何內(nèi)容,沒有特定的規(guī)則。 413.11 編程規(guī)則 C#具有大量的可調(diào)用方法。傳遞給圖形方法的參數(shù)的作用是控制繪制的形狀。423.12 編程陷阱 注意標(biāo)點(diǎn)、拼寫和方法名的大小寫。逗號(hào)和括號(hào)必須像示例程序中的那樣精確。433.13 語(yǔ)法要點(diǎn) 每個(gè)方法中的參數(shù)的順序和類型必須正確。443.14 新的語(yǔ)言元素 ( )用來(lái)括起參數(shù)。在聲明項(xiàng)時(shí)類名稱

17、的使用。創(chuàng)建新對(duì)象時(shí)new的使用。調(diào)用類的方法時(shí)“.”符號(hào)的使用。在注釋前/的使用,以及用來(lái)括起注釋的/*和*/的使用。結(jié)束語(yǔ)句的“;”的使用。453.15 新的IDE工具 沒有新的IDE工具。463.16 小結(jié) 語(yǔ)句必須遵守一定的順序,從上到上執(zhí)行。C#具有一組“繪圖”方法,可以調(diào)用它們來(lái)顯示圖形。圖形定位基于像素坐標(biāo)。參數(shù)值可以傳遞給方法。47第4章 變量和計(jì)算4.1 簡(jiǎn)介4.2 int的本質(zhì)4.3 double的本質(zhì)4.4 聲明變量4.5 賦值語(yǔ)句4.6 計(jì)算和運(yùn)算符484.7 算術(shù)運(yùn)算符4.8 運(yùn)算符4.9 使用+運(yùn)算符連接字符串4.10 字符串和數(shù)字之間的轉(zhuǎn)換 4.11 文本框和標(biāo)簽

18、 4.12 數(shù)字之間的轉(zhuǎn)換 返回目錄494.13 表達(dá)式的作用 4.14 編程原則 4.15 編程陷阱 4.16 語(yǔ)法要點(diǎn) 4.17 新的語(yǔ)言元素 4.18 新增的IDE工具 4.19 小結(jié)504.1 簡(jiǎn)介 這里將介紹兩種基本的數(shù)值類型:整數(shù),數(shù)學(xué)中稱為整數(shù),C#中稱為int類型?!靶?shù)點(diǎn)”數(shù),數(shù)學(xué)中稱為實(shí)數(shù),C#中稱為double。 選擇int或double應(yīng)該視具體問題而定。 514.2 int的本質(zhì) 在C#中使用int時(shí),可能范圍是: -2,147,483,648+2,147,483,647,或大約-2,000,000,000+2,000,000,000之間的一個(gè)整數(shù)。所有的int計(jì)算都

19、是精確的,也就是說(shuō),數(shù)字中的全部信息都被正確地保留。 返回目錄524.3 double 的本質(zhì) 在C#中使用double數(shù)字時(shí),它的值可以位于-1.79103081.7910308之間。 double具有如此大的范圍和精確數(shù)字,應(yīng)付日常數(shù)量的計(jì)算其精確度是綽綽有余了。 534.4 聲明變量 在C#中,這些名稱:必須以字母開頭(AZ或az)??砂我庾帜富驍?shù)字(數(shù)字為09)??砂聞澗€“_”。最多255個(gè)字符。 注意,C#是區(qū)分大小寫的。 544.5 賦值語(yǔ)句 變量一旦聲明,就可以通過賦值語(yǔ)句將新值放入它們之中,如下所示: length = 20; 注意:數(shù)據(jù)是從的右邊到左邊移動(dòng)。無(wú)論len

20、gth原先是什么值,現(xiàn)在它被20“重寫”。變量只能有一個(gè)值,即當(dāng)前值。 554.6 計(jì)算和運(yùn)算符 C#使用運(yùn)算符+和-執(zhí)行遞增和遞減(減1)。它們最頻繁的使用是在循環(huán)中(第8章)。下面是+ 運(yùn)算符的一種用法: n = 3; n+; / n的當(dāng)前值是4 =的要點(diǎn)是它不同于代數(shù)意義上的“等于”。不妨將它看作“變?yōu)椤被颉暗玫健钡囊馑肌?64.7 算術(shù)運(yùn)算符 運(yùn)算符 含義* 乘/ 除% 取模+ 加- 減574.8 %運(yùn)算符 %(取模)運(yùn)算符經(jīng)常與整數(shù)除法一起使用,用來(lái)提供余數(shù)部分。 %最常用于int類型,但它同樣可以用于double類型。 返回目錄584.9 使用+運(yùn)算符連接字符串 int i = 2

21、, j = 3; string s, note = Answer is: ; s = note + i + j; s的值是多少?有兩種可能性: 答案是:23,兩個(gè)+運(yùn)算符均作用于字符串。 答案是:5,第二個(gè)+使兩個(gè)數(shù)字相加。 事實(shí)上,將發(fā)生第一種情況。C#工作的順序是從左到右。第一個(gè)+生成字符串“Answer is: 2”。然后第二個(gè)+將3連入結(jié)尾。不過,如果使用:s = note + (i + j);則先計(jì)算2 + 3,得到5。最后才發(fā)生字符串連接。返回目錄594.10 字符串和數(shù)字之間的轉(zhuǎn)換 使用ToString方法轉(zhuǎn)換數(shù)字變量或算式,例如: string s1, s2; int num

22、= 44; double d=1.234; s1 = Convert.ToString(num); / s1值為44 s2 = Convert.ToString(d); / s2值為1.234 上面的ToString方法返回一個(gè)字符串??梢酝ㄟ^將此字符串存儲(chǔ)在一個(gè)變量中或以其他方式來(lái)使用它。返回目錄604.11 文本框和標(biāo)簽 文本框可從工具箱中選擇并拖放到窗體上。文本框具有非常多的屬性,但最主要的屬性是Text,供用戶鍵入字符串。 標(biāo)簽將為用戶顯示一些幫助信息,通常通過屬性窗口在設(shè)計(jì)時(shí)設(shè)置標(biāo)簽的屬性。 返回目錄614.12 數(shù)字之間的轉(zhuǎn)換 從一種類型的數(shù)值轉(zhuǎn)換為另一種類型最常見的情況是將一個(gè)i

23、nt轉(zhuǎn)換為一個(gè)double,以及將一個(gè)double轉(zhuǎn)換為一個(gè)int。返回目錄624.13 表達(dá)式的作用 C#語(yǔ)言中的表達(dá)式類似于數(shù)學(xué)運(yùn)算中的表達(dá)式,是操作符、操作對(duì)象和標(biāo)點(diǎn)符號(hào)等連接而成的式子。操作符是用來(lái)定義類實(shí)例中表達(dá)式操作符的。表達(dá)式是指定計(jì)算的操作符操作數(shù)序列。返回目錄634.14 編程規(guī)則 變量具有名稱,該名稱由程序員選擇。變量具有類型,該類型由程序員選擇。一個(gè)變量?jī)?chǔ)存一個(gè)值。變量的值可以通過賦值語(yǔ)句來(lái)改變。返回目錄644.15 編程陷阱 注意變量名的拼寫。在剛開始的時(shí)候很難標(biāo)注編譯錯(cuò)誤。括號(hào)必須成對(duì)。在標(biāo)簽和文本框的文本屬性中使用數(shù)字時(shí),記住要使用字符串轉(zhuǎn)換工具。在將幾個(gè)項(xiàng)目相乘時(shí)

24、,必須在它們之間加上*號(hào)。返回目錄654.16 語(yǔ)法要點(diǎn) 通過聲明變量的類及其名稱來(lái)聲明變量。最實(shí)用的類型是int、double和string。主要的算術(shù)運(yùn)算符是*、/、%、+和-。+運(yùn)算符用來(lái)連接字符串。+和-運(yùn)算符用來(lái)完成遞增和遞減操作。使用Convert.ToString方法將數(shù)字轉(zhuǎn)換為字符串。使用Convert.ToInt32和Convert.ToDouble方法將字符串轉(zhuǎn)換為數(shù)字。在一個(gè)double項(xiàng)之前加上(int),可將它轉(zhuǎn)換為一個(gè)整數(shù)。在一個(gè)int項(xiàng)之前加上(double) ,可將它轉(zhuǎn)換為一個(gè)雙精度值。返回目錄664.17 新的語(yǔ)言元素 int double string。運(yùn)算

25、符+、-、*、/、%。用于遞增的+和遞減的-。用于賦值的。強(qiáng)制轉(zhuǎn)換:Convert類、(double)和(int)強(qiáng)制轉(zhuǎn)換。返回目錄674.18 新增的IDE工具 具有Text屬性的TextBox和Label控件。控件的重命名。返回目錄684.19 小結(jié) 變量用來(lái)保存值。它們直到顯式改變之前一直保持原值。運(yùn)算符對(duì)值進(jìn)行運(yùn)算。表達(dá)式是能生成一個(gè)值的算式。它可用于多種情況中,包括用在賦值的右邊,或作為方法調(diào)用的參數(shù)。 返回目錄69第5章 方法和參數(shù)5.1 簡(jiǎn)介 5.2 編寫自己的方法5.3 第一個(gè)方法 5.4 調(diào)用方法 5.5 傳遞參數(shù)5.6 形參和實(shí)參705.7 三角形方法5.8 局部變量5.9

26、 命名沖突5.10 事件處理方法5.11 return和結(jié)果5.12 構(gòu)建在方法上715.13 按引用傳遞參數(shù)5.14 out和ref參數(shù) 5.15 out的例子 5.16 ref的例子 5.17 一個(gè)使用ref的交換方法 5.18 this和對(duì)象 5.19 重載 725.20 將對(duì)象傳遞給方法 5.21 編程原則5.22 編程陷阱 5.23 語(yǔ)法要點(diǎn)5.24 新的語(yǔ)言元素5.25 新的 IDE工具5.26 小結(jié)735.1 簡(jiǎn)介 大型程序可能很復(fù)雜,這會(huì)導(dǎo)致它們難以理解和調(diào)試。減少?gòu)?fù)雜性最重要的技巧是將程序分成獨(dú)立的段。而且,如果該段有名稱,僅僅通過使用它的名稱就可以調(diào)用或激活它。在某種程度上

27、,它使用戶能夠從更高的層次考慮問題。在C#中,這樣的段稱為方法。 745.2 編寫自己的方法 Worldwide Cardboard Box公司有一個(gè)徽標(biāo)(logo),它由相互包含的3個(gè)正方形組成。 以下是在(10, 20)和(100, 100)兩處繪出兩個(gè)相同徽標(biāo)的代碼:/ 在左上角繪制徽標(biāo)paper.DrawRectang(10, 20, 60, 60);paper.DrawRectang(10, 20, 40, 40);paper.DrawRectang(10, 20, 20, 20);/ 在右下角繪制徽標(biāo)paper.DrawRectang(100, 100, 60, 60);paper

28、.DrawRectang(100, 100, 40, 40);paper.DrawRectang(100, 100, 20, 20); 注意,正方形的大小是20、40和60像素,它們的左上角都處于同一點(diǎn)。 755.3 第一個(gè)方法 以下是一個(gè)名為L(zhǎng)ogo Method的完整程序。它告訴用戶如何創(chuàng)建和使用方法,private void button1_Click(object sender, System.EventArgs e) Graphics paper; paper = pictureBox1.CreateGraphics(); Pen myPen = new Pen(Color.Blac

29、k); DrawLogo(paper, myPen, 10, 20); DrawLogo(paper, myPen, 100, 100);private void DrawLogo(Graphics drawingArea, Pen penToUse, int xPos, int yPos) drawingArea.DrawRectangangle(penToUse, xPos, yPos, 60, 60); drawingArea.DrawRectangangle(penToUse, xPos, yPos, 40, 40); drawingArea.DrawRectangangle(penT

30、oUse, xPos, yPos, 20, 20);765.4 調(diào)用方法 在C#中,通過給出方法的名稱和括號(hào)中的參數(shù)列表來(lái)調(diào)用private方法。在上面的程序中,第一個(gè)調(diào)用是: DrawLogo(paper, myPen, 10, 20); 該語(yǔ)句有兩個(gè)效果:參數(shù)值自動(dòng)傳遞給方法。程序跳到方法的主體部分同時(shí)執(zhí)行這部分語(yǔ)句。775.5 傳遞參數(shù) 理解參數(shù)如何傳送給方法是很重要的。傳遞按照從左到右的順序發(fā)生。調(diào)用必須提供參數(shù)的正確數(shù)值和類型。 在C#中將數(shù)據(jù)項(xiàng)傳遞給方法共有兩種途徑:值傳遞調(diào)用傳遞 785.6 形參和實(shí)參 在許多語(yǔ)言中,調(diào)用者提供的是“實(shí)參”(actual parameters),

31、而方法聲明中使用的是“形參”(formal parameters)。795.7 三角形方法 為了介紹方法的更多特征,將創(chuàng)建一個(gè)更有用的方法,稱之為DrawTriangle。 以下是關(guān)于DrawTriangle方法編碼的幾個(gè)要點(diǎn):將它命名為DrawTriangle,但這完全取決于用戶。也可以選擇Triangle甚至DrawThing,但DrawTriangle符合庫(kù)方法的名稱。形參drawingArea、penToUse、xPlace、yPlace、width和height的名稱也是由用戶選擇的。參數(shù)的順序也由用戶控制。如果愿意,也可以對(duì)方法重新編碼,以便在寬度之前要求高度。(把寬度放在前面是因

32、為很多C#的庫(kù)方法都使用這種順序。)返回目錄805.8 局部變量 局部變量的作用是協(xié)助方法的工作,而不管方法做什么。局部變量有一個(gè)有限的作用域,受限于自己的方法。它們的存在是臨時(shí)的在方法調(diào)用時(shí)創(chuàng)建,在退出時(shí)銷毀。815.9 命名沖突 在C#中,方法的創(chuàng)建者可以自由地為局部變量和參數(shù)選擇合適的名稱但是如果所選的名稱與其他變量有沖突時(shí)會(huì)發(fā)生什么呢?對(duì)于下面的代碼:private void MethodOne(int x, int y) int z = 0; / 代碼.private void MethodTwo(int z, int x) int w = 1; / 代碼. 假定該方法由兩個(gè)人編寫。

33、MethodOne有x、y作為參數(shù),同時(shí)聲明了一個(gè)整數(shù)z。這3個(gè)變量都是MethodOne的局部變量。在MethodTwo中,該程序員運(yùn)用了為局部變量命名的自由權(quán)力并選擇了z、x和w。x的(和z的)命名沖突沒有出現(xiàn)什么問題,因?yàn)镃#將MethodOne的x看作與MethodTwo的x不同。825.10 事件和處理方法 C#系統(tǒng)會(huì)將所有事件(比如按鈕單擊、鼠標(biāo)單擊等事件)發(fā)送給它們相應(yīng)的事件方法。通常,不需要自己調(diào)用這些方法。835.11 return和結(jié)果 為了從方法返回一個(gè)值,使用return語(yǔ)句: return expression; 該表達(dá)式可能是數(shù)值、變量或算式(甚至是方法調(diào)用),但是

34、它的類型必須正確,與方法在聲明中指定的類型一樣。845.12 構(gòu)建在方法上 使用來(lái)自C#庫(kù)的DrawRectang方法和自己編寫的DrawTriangle方法。 855.13 按引用傳遞參數(shù)傳遞參數(shù)方法的要點(diǎn): 傳遞數(shù)據(jù)的副本(通過值)更為安全。 傳遞數(shù)據(jù)的所在之處(按引用傳遞)速度很快。 如果想要傳遞變量給方法,可有兩種選擇:傳遞當(dāng)前值的一個(gè)副本。傳遞地址。 C#允許兩種類型的引用:使用關(guān)鍵字ref或者out。 865.14 out和ref參數(shù) 關(guān)鍵字out和ref允許程序員精確訪問并改變傳遞到方法中的調(diào)用參數(shù)。有兩種可能性:調(diào)用方法通過某種方式修改現(xiàn)有的值。在術(shù)語(yǔ)上叫做“更新”。方法需要訪

35、問參數(shù)的當(dāng)前值。在這種情況下,使用關(guān)鍵字ref。調(diào)用方法將一個(gè)全新的值放到參數(shù)中,而不需要訪問它的當(dāng)前值。在這種情況下,使用關(guān)鍵字out。875.15 out的例子 private void button1_Click(object sender, System.EventArgs e) int originalCents, wholeDollars=0, centsLeft=0; originalCents = Convert.ToInt32(textBox1.Text); DollarsAndCents(originalCents, out wholeDollars, out centsL

36、eft); dollarsLabel.Text = Convert.ToString(wholeDollars); centsLabel.Text = Convert.ToString(centsLeft);private void DollarsAndCents(int totalCents, out int dollars, out int centsLeft) dollars = totalCents / 100; centsLeft = totalCents % 100;返回目錄885.16 ref的例子 private void button1_Click(object sender

37、, System.EventArgs e) int pieWidth = 8, pieLength = 6; IncreaseSize(ref pieWidth, ref pieLength); IncreaseSize(ref pieWidth, ref pieLength); IncreaseSize(ref pieWidth, ref pieLength);private void IncreaseSize(ref int width, ref int length) int area; width = width + 2; length = length + 2; area = wid

38、th * length; MessageBox.Show(Pie size: + Convert.ToString(width) + by + Convert.ToString(length) + . Area is + Convert.ToString(area);895.17 一個(gè)使用ref的交換方法 編寫方法交換兩個(gè)變量的值是使用參數(shù)的一個(gè)典型例子。首先給出沒有使用方法的程序代碼: aCopy = a; a = b; b = aCopy;注意如果使用: a = b; b = a; 則最后a和b都被設(shè)置為b的原始值。 因此,希望將只能作用于變量a和b的代碼捆綁成一個(gè)方法。該方法共有兩個(gè)參數(shù)

39、,而且需要訪問它們的原始值。 返回目錄905.18 this和對(duì)象 當(dāng)一個(gè)對(duì)象調(diào)用在它自己內(nèi)部所聲明的方法時(shí),可以簡(jiǎn)單地使用: Swap(ref a, ref b); 或者可以使用完整的對(duì)象表示法,例如: this.Swap(ref a, ref b); this是一個(gè)C#關(guān)鍵字,代表當(dāng)前正在運(yùn)行的對(duì)象。 返回目錄915.19 重載 類中兩個(gè)以上的方法取的名字相同,只要使用的參數(shù)類型或者參數(shù)個(gè)數(shù)不同,編譯器便知道在何種情況下應(yīng)該調(diào)用哪個(gè)方法,這就叫做方法的重載。返回目錄925.20 將對(duì)象傳遞給方法 在程序中主要介紹了傳遞數(shù)值,但有時(shí)也需要傳遞更為復(fù)雜的對(duì)象,比如畫筆和圖片框。下面有一個(gè)例子,

40、將傳遞兩個(gè)將要相加的數(shù)值,同時(shí)傳遞一個(gè)用來(lái)顯示結(jié)果的標(biāo)簽: private void ShowSum(Label display, int a, int b) display.Text = Convert.ToString(a + b); 可以像下面這樣調(diào)用方法: ShowSum(label1, 3, 4); ShowSum(label2, 5, 456); 通過值傳遞,對(duì)象允許操作它的屬性并調(diào)用它的方法。返回目錄935.21 編程原則 方法是有名稱的代碼段。通過使用方法的名稱調(diào)用方法??梢跃帉憊oid方法,或者返回單個(gè)結(jié)果的方法。可以傳遞參數(shù)給方法,通過值或調(diào)用(使用ref或out)如果方法

41、只需要返回一個(gè)值,則考慮使用return而不是out或ref。如果能夠在代碼中識(shí)別出一項(xiàng)定義明確的任務(wù),請(qǐng)考慮將它分離出來(lái)并且將它編寫為一個(gè)方法。返回目錄945.22 編程陷阱方法的標(biāo)題必須包括參數(shù)類型。方法調(diào)用不能包括類型名。調(diào)用方法時(shí),必須提供正確的參數(shù)個(gè)數(shù)和參數(shù)類型。必須安排以某種方式利用返回值。當(dāng)一個(gè)方法指定它需要out或ref參數(shù)時(shí),調(diào)用必須確保這一點(diǎn)。返回目錄955.23 語(yǔ)法要點(diǎn)方法的通用模式包括兩種形式。即返回結(jié)果和不返回結(jié)果。將方法作為表達(dá)式的一部分來(lái)調(diào)用。 方法體必須包括一條return語(yǔ)句,該語(yǔ)句說(shuō)明值的正確類型。方法沒有參數(shù)時(shí),在聲明和調(diào)用時(shí)都必須使用空括號(hào)()。形參列

42、表由方法的編寫者創(chuàng)建。每個(gè)參數(shù)都需要一個(gè)名稱和一個(gè)類型。實(shí)參列表由方法的調(diào)用者編寫。 返回目錄965.24 新的語(yǔ)言元素私有方法的聲明。由方法名稱和參數(shù)組成的方法調(diào)用。使用return從非void方法退出,同時(shí)傳回一個(gè)值。使用return從void方法退出。out和ref的使用。重載的使用。使用this表示當(dāng)前對(duì)象。返回目錄975.25 新的IDE工具本章未介紹新的IDE工具。返回目錄985.26 小結(jié)方法包含程序的子任務(wù)??梢詫?shù)傳遞給方法。使用方法在術(shù)語(yǔ)上稱為調(diào)用方法。非void方法返回一個(gè)結(jié)果。返回目錄99第6章 使用對(duì)象6.1 簡(jiǎn)介6.2 實(shí)例變量6.3 窗體構(gòu)造函數(shù)6.4 Trac

43、kBar類6.5 using和命名空間6.6 成員、方法和屬性6.7 Random類1006.8 Timer類6.9 編程原則 6.10 編程陷阱6.11 語(yǔ)法要點(diǎn)6.12 新的語(yǔ)言元素6.13 新的IDE工具6.14 小結(jié)1016.1 簡(jiǎn)介 本章將分析C#庫(kù)中類的使用。 通常,對(duì)象在術(shù)語(yǔ)上稱為控件或組件。這兩個(gè)術(shù)語(yǔ)實(shí)際上是通用的,但C#使用“控件”表示可在窗體上進(jìn)行操作的項(xiàng)目(比如按鈕)。1026.2 實(shí)例變量 程序員可以自由選擇實(shí)例變量的名稱。注意下面的代碼是如何選擇合適的局部變量名稱的。 public class Form1 : System.Windows.Forms.Form pri

44、vate int n = 8; private void MyMethod() int n; n = 3; / 哪一個(gè)n? 盡管這兩個(gè)變量在MyMethod中都允許訪問(在作用域中),但原則上選擇的是局部變量。實(shí)例變量(類級(jí))n依然設(shè)置為8。返回目錄1036.3 窗體構(gòu)造函數(shù) 當(dāng)C#系統(tǒng)運(yùn)行程序時(shí),它做的第一件事是調(diào)用窗體的構(gòu)造函數(shù)。構(gòu)造函數(shù)的作用是構(gòu)建窗體并初始化它。(注意構(gòu)造函數(shù)是在類的外部調(diào)用的,聲明為public而不是private)。1046.4 TrackBar類 TrackBar是可以從工具箱中獲得的GUI控件。它在本質(zhì)上與字處理程序窗口邊側(cè)的滾動(dòng)條類似,但TrackBar可以放

45、置在窗體的任何位置上。返回目錄1056.5 using和命名空間 為了使用一個(gè)類,必須確保它已經(jīng)通過關(guān)鍵字using導(dǎo)入程序中。不過,這有兩種可能,一些最常用的命名空間將被自動(dòng)導(dǎo)入到Windows應(yīng)用程序中。這些命名空間是:SystemSystem.DrawingSystem.CollectionsSystem.ComponentModelSystem.Windows.FormsSystem.Data 1066.6 成員、方法和屬性 類的成員是指它的屬性和方法。屬性包含的值表示類的實(shí)例的當(dāng)前狀態(tài)(比如標(biāo)簽中包含的文本),而方法是讓實(shí)例完成某項(xiàng)任務(wù),比如畫一個(gè)圓。屬性的使用方式與變量相似,可以在

46、它們之中放入新值并訪問它們的當(dāng)前值。 1076.7 Random類 Random類的實(shí)例需要顯式聲明與初始化。1086.8 Timer類 計(jì)時(shí)器的主要功能:計(jì)時(shí)器以固定的間隔產(chǎn)生嘀噠。每個(gè)嘀噠都是一個(gè)調(diào)用Tick方法的事件。Interval屬性可設(shè)置為一個(gè)整數(shù)值,代表以毫秒表示的兩次嘀噠之間的時(shí)間。使用Start和Stop方法啟動(dòng)或停止計(jì)時(shí)器。在程序中可放入任意多個(gè)具有不同時(shí)間間隔的計(jì)時(shí)器。返回目錄1096.9 編程原則 除了利用現(xiàn)有組件,C#也可用來(lái)編寫為其他人使用的GUI組件。在程序中集成這些組件很簡(jiǎn)單:通過一項(xiàng)菜單操作將它們添加到一個(gè)工程中。 1106.10 編程陷阱 如果聲明了一個(gè)實(shí)例

47、,但是沒有使用new對(duì)它進(jìn)行初始化,就會(huì)產(chǎn)生System.NullReferenceException類型的運(yùn)行時(shí)錯(cuò)誤。運(yùn)行時(shí)錯(cuò)誤(即bug)比編譯時(shí)錯(cuò)誤更難解決;它們不容易發(fā)現(xiàn),而且更嚴(yán)重,因?yàn)槌绦驎?huì)停止執(zhí)行。相信你一定遇見過此類錯(cuò)誤! 返回目錄1116.11 語(yǔ)法要點(diǎn) 實(shí)例變量在方法外聲明,如下所示: private int yourVariable; private Random myVariable = new Random();實(shí)例變量在聲明時(shí)就可以初始化,或者在方法內(nèi)初始化。使用與變量相似的方式操作屬性:可得到和設(shè)置它們的值。1126.12 新的語(yǔ)言元素 私有實(shí)例變量。使用new來(lái)

48、初始化。使用using導(dǎo)入命名空間。TrackBar、Random和Timer類。1136.13 新的IDE工具 組件托盤提供那些無(wú)法在窗體上可視顯示的控件。1146.14 小結(jié) C#系統(tǒng)中有大量可供使用的類,這也是理所應(yīng)當(dāng)?shù)?。除了工具箱中的控件類,還可以使用using以及適當(dāng)?shù)臉?gòu)造函數(shù)將它們集成到程序中。115第7章 選擇 7.1 簡(jiǎn)介7.2 if語(yǔ)句7.3 if . else7.4 比較運(yùn)算符7.5 與、或、非7.6 嵌套的if7.7 switch語(yǔ)句1167.8 布爾型變量7.9 編程原則7.10 編程陷阱7.11 語(yǔ)法要點(diǎn)7.12 新的語(yǔ)言元素7.13 小結(jié)1177.1 簡(jiǎn)介 在程序中

49、需要大量使用選擇。計(jì)算機(jī)測(cè)試某個(gè)值,并且根據(jù)其結(jié)果,選擇一個(gè)或另一個(gè)動(dòng)作過程。只要程序面臨動(dòng)作選擇并決定采取一種或是另一種動(dòng)作,就可以使用if或switch語(yǔ)句來(lái)加以描述。 1187.2 if語(yǔ)句 if語(yǔ)句分為兩個(gè)部分:測(cè)試條件當(dāng)條件為真時(shí)執(zhí)行的語(yǔ)句或語(yǔ)句序列 1197.3 ifelse 測(cè)試條件:條件為真時(shí),要執(zhí)行的語(yǔ)句或語(yǔ)句序列。條件為假時(shí),要執(zhí)行的語(yǔ)句或語(yǔ)句序列。1207.4 比較運(yùn)算符 符號(hào) 意義 大于小于=等于!=不等于=大于或等于1217.5 與、或、非 &運(yùn)算符指“與”。 |運(yùn)算符指“或” 。 !運(yùn)算符指“非” 。1227.6 嵌套的if 第二個(gè)if語(yǔ)句完全包含在第一個(gè)之中。這稱

50、作嵌套。嵌套并不同于縮排,縮排只是令嵌套更加明顯而已。 1237.7 switch語(yǔ)句 switch 語(yǔ)句是完成多個(gè)if語(yǔ)句的另一種方法。使用if語(yǔ)句,可以完成所需的任何操作,但在適當(dāng)?shù)那闆r使用switch將令程序更為簡(jiǎn)潔。 1247.8 布爾型變量 現(xiàn)在學(xué)習(xí)一種稱為bool的新型變量,它只能保存值true或值false。單詞bool、true和false都是C#中的保留關(guān)鍵字,不能用于其他用途。 1257.9 編程原則 通常計(jì)算機(jī)按順序逐條執(zhí)行指令。if語(yǔ)句指示計(jì)算機(jī)測(cè)試某個(gè)數(shù)據(jù)的值,然后根據(jù)測(cè)試結(jié)果選擇一個(gè)動(dòng)作。該選項(xiàng)有時(shí)稱作選擇(selection)。數(shù)據(jù)測(cè)試則稱作條件(conditio

51、n)。if語(yǔ)句結(jié)束后,計(jì)算機(jī)繼續(xù)按順序執(zhí)行指令。1267.10 編程陷阱 C#的規(guī)則是如果要執(zhí)行的只有一條語(yǔ)句,則圓括號(hào)不是必不可少的。 1277.11 語(yǔ)法要點(diǎn) 第一種if語(yǔ)句的結(jié)構(gòu)是:if (條件) 語(yǔ)句第二種if語(yǔ)句的結(jié)構(gòu)是:if (條件) 語(yǔ)句else 語(yǔ)句128switch語(yǔ)句的結(jié)構(gòu)是:switch (變量) case 值1: 語(yǔ)句 break; case 值2: 語(yǔ)句 break; default: 語(yǔ)句 break;默認(rèn)部分是可選的。1297.12 新的語(yǔ)言元素 用于決策的控制結(jié)構(gòu): if, else switch, case, break, default比較運(yùn)算符、=、!=、

52、=。邏輯運(yùn)算符&、|和!。變量聲明為bool,它的值既可以是true,也可以是false。1307.13 小結(jié)if語(yǔ)句允許程序員通過指令程序執(zhí)行一個(gè)測(cè)試來(lái)控制動(dòng)作順序。根據(jù)此測(cè)試,計(jì)算機(jī)執(zhí)行一個(gè)動(dòng)作。if語(yǔ)句共有兩種: if和if.elseswitch語(yǔ)句為執(zhí)行多個(gè)測(cè)試提供了一個(gè)方便的方法。不過,switch語(yǔ)句只限于測(cè)試整數(shù)或字符串。bool變量可賦值為true或false,可以使用if語(yǔ)句來(lái)測(cè)試。131第8章 循環(huán) 8.1 簡(jiǎn)介8.2 while語(yǔ)句8.3 for語(yǔ)句8.4 與、或、非8.5 do . While8.6 嵌套循環(huán)1328.7 組合控制結(jié)構(gòu)8.8 編程原則8.9 編程陷阱8.

53、10 語(yǔ)法要點(diǎn)8.11 新的語(yǔ)言元素8.12 小結(jié)1338.1 簡(jiǎn)介 前面已經(jīng)知道計(jì)算機(jī)可以執(zhí)行指令序列?,F(xiàn)在來(lái)看一下如何數(shù)次重復(fù)指令序列。在程序設(shè)計(jì)語(yǔ)言中,重復(fù)(repetition)也叫做循環(huán)(loop)。 C#程序員通過兩種方法執(zhí)行循環(huán):while和for。1348.2 while語(yǔ)句 while表示有條件地將內(nèi)嵌語(yǔ)句執(zhí)行0 遍或若干遍。如果條件為真,循環(huán)繼續(xù)執(zhí)行;如果條件為假,則循環(huán)結(jié)束, 1358.3 for語(yǔ)句 for語(yǔ)句的格式: for(initializer;condition;iterator) embedded-statement初始語(yǔ)句。它只在循環(huán)開始之前執(zhí)行一次。條件。

54、在執(zhí)行每次循環(huán)前都要進(jìn)行測(cè)試。最后語(yǔ)句。它在每次循環(huán)的末尾執(zhí)行,正好在每次循環(huán)結(jié)束之前。 1368.4 與、或、非符號(hào) 意義 &與|或!非1378.5 dowhile do-while 語(yǔ)句與while 語(yǔ)句不同的是它將內(nèi)嵌語(yǔ)句至少執(zhí)行一次或若干次。1388.6 嵌套循環(huán)嵌套循環(huán)是指循環(huán)中的循環(huán)。 1398.7 組合控制結(jié)構(gòu) 事實(shí)上大部分程序都是由下面幾部分構(gòu)成:順序結(jié)構(gòu)。循環(huán)結(jié)構(gòu)。選擇結(jié)構(gòu)。庫(kù)方法的調(diào)用。程序員自己編寫的方法的調(diào)用。 1408.8 編程原則 循環(huán)在程序設(shè)計(jì)中廣泛使用。在C#中,可用的循環(huán)共有3種:while、for和do。 1418.9 編程陷阱在編寫循環(huán)條件時(shí)一定要非常謹(jǐn)慎

55、。多循環(huán)一次或少循環(huán)一次是常見的錯(cuò)誤。注意循環(huán)中的復(fù)合條件。如果循環(huán)體只有一條語(yǔ)句,則不必將它括在花括號(hào)內(nèi)。但通常使用花括號(hào)更為安全。1428.10 語(yǔ)法要點(diǎn)在while循環(huán)中,對(duì)條件進(jìn)行測(cè)試發(fā)生在每次循環(huán)開始之前。如果條件為真,循環(huán)繼續(xù);如果為假,循環(huán)終止。每次for循環(huán)的結(jié)尾都會(huì)執(zhí)行“動(dòng)作”。在每次do循環(huán)之后執(zhí)行測(cè)試。1438.11 新的語(yǔ)言元素 循環(huán)的3種控制結(jié)構(gòu):whilefordo1448.12 小結(jié)編程中的重復(fù)稱作循環(huán)。在C#中共有3種循環(huán):while、for和do。如果想在循環(huán)語(yǔ)句中描述循環(huán)的主要特性,應(yīng)該使用for。do用于需要在循環(huán)結(jié)尾測(cè)試條件,而且用于循環(huán)至少執(zhí)行一次的情

56、況下。145第9章 調(diào)試9.1 簡(jiǎn)介 9.1.1 編譯 9.1.2 鏈接 9.1.3 運(yùn)行9.2 使用調(diào)試器 9.2.1 斷點(diǎn) 9.2.2 單步9.3 關(guān)于調(diào)試的一個(gè)范例研究1469.4 常見錯(cuò)誤 9.4.1 編譯錯(cuò)誤 9.4.2 運(yùn)行時(shí)錯(cuò)誤 9.4.3 邏輯錯(cuò)誤9.5 編程陷阱9.6 新的IDE工具9.7 小結(jié)1479.1 簡(jiǎn)介 調(diào)試的目的是發(fā)現(xiàn)程序中的bug并改正它。bug就是程序中的錯(cuò)誤。 bug的可能來(lái)源可分為三個(gè)階段: 編譯 鏈接 運(yùn)行1489.1.1 編譯 當(dāng)鍵入程序時(shí),C#開發(fā)環(huán)境執(zhí)行全面的檢查從而顯示出程序中的錯(cuò)誤,以防止它們繼續(xù)保留下去。其中的一些錯(cuò)誤在開始鍵入程序語(yǔ)句的時(shí)候

57、就會(huì)被加上下劃線。這些錯(cuò)誤在術(shù)語(yǔ)上稱為編譯錯(cuò)誤。最常見的例子有未經(jīng)聲明的變量,引號(hào)或括號(hào)缺失等。 1499.1.2 鏈接 全部程序都利用庫(kù)方法,有一些還利用程序員自己編寫的類。僅當(dāng)程序開始運(yùn)行的時(shí)候才會(huì)鏈接這些類。但I(xiàn)DE在程序一鍵入時(shí)就會(huì)立即檢查它們,以確保所有這些被調(diào)用的方法都確實(shí)存在,而且參數(shù)以正確的個(gè)數(shù)和類型進(jìn)行匹配。在鍵入程序的時(shí)候,出錯(cuò)的地方也會(huì)被加上下劃線。1509.1.3 運(yùn)行 程序雖然運(yùn)行,但第一次就像期望那樣運(yùn)行的情況很少。一些錯(cuò)誤可被自動(dòng)檢測(cè),然后告知程序員,比如試圖用0除一個(gè)int數(shù)。其他錯(cuò)誤則比較隱蔽,它們只是增加預(yù)想不到的行為。程序中可能有一個(gè)錯(cuò)誤,也可能有多個(gè)錯(cuò)誤

58、,因此調(diào)試是必不可少的一項(xiàng)工作。 1519.2 使用調(diào)試器 C#集成開發(fā)環(huán)境提供一個(gè)調(diào)試器。調(diào)試器是一個(gè)是一個(gè)命令行程序,幫助開發(fā)人員發(fā)現(xiàn)和調(diào)試基于CLR 的應(yīng)用程序中的錯(cuò)誤。它提供多種工具,其中包括單步和斷點(diǎn)。1529.2.1 斷點(diǎn) 斷點(diǎn)是程序中止的地方,程序員可以使用調(diào)試器在程序中插入斷點(diǎn)。通常,選擇的最佳斷點(diǎn)是在:方法的開頭,以檢驗(yàn)方法的所有參數(shù)無(wú)誤。在方法剛被調(diào)用后(以檢驗(yàn)方法正確地完成了工作)或在方法的末尾。1539.2.2 單步 調(diào)試器也允許每次執(zhí)行程序的一行。這稱為單步。 1549.3 關(guān)于調(diào)試的一個(gè)范例研究 本程序用來(lái)證明羅密歐(Remeo)與朱麗葉(Juliet)之間 的愛情

59、。出錯(cuò)代碼如下: private void button1_Click(object sender, System.EventArgs e) string left = leftTextBox.Text; string right = rightTextBox.Text; left = right; right = left; leftTextBox.Text = left; rightTextBox.Text = right; 程序中只有一個(gè)方法,因此問題必定出在這個(gè)方法中。在方法開始的地方插入一個(gè)斷點(diǎn)并單步執(zhí)行這些語(yǔ)句,再將光標(biāo)放在兩個(gè)變量上(文本框的值)以顯示它們的值。 1559.4 常

60、見錯(cuò)誤 C#程序員很容易犯一些常見錯(cuò)誤,主要是: 編譯錯(cuò)誤 運(yùn)行時(shí)錯(cuò)誤 邏輯錯(cuò)誤 1569.4.1 編譯錯(cuò)誤 C#開發(fā)環(huán)境在用戶鍵入程序時(shí)將對(duì)程序執(zhí)行多種檢查,并在它發(fā)現(xiàn)有問題的地方用波浪形藍(lán)色下劃線顯示。這些問題在術(shù)語(yǔ)上叫做編譯或語(yǔ)法錯(cuò)誤。 下面是一些容易引起編譯錯(cuò)誤的地方:1 變量名2方法和屬性名稱3 轉(zhuǎn)換1579.4.2 運(yùn)行時(shí)錯(cuò)誤 運(yùn)行時(shí)錯(cuò)誤是在程序運(yùn)行時(shí)發(fā)生的錯(cuò)誤,但只能在運(yùn)行時(shí)由系統(tǒng)檢測(cè)。常見的運(yùn)行時(shí)錯(cuò)誤: 算術(shù)異常 數(shù)組索引 使用不存在的對(duì)象 1589.4.3 邏輯錯(cuò)誤 邏輯錯(cuò)誤最難發(fā)現(xiàn),因?yàn)樗鼈冸S各個(gè)程序運(yùn)行情況的不同而不同。因此沒有檢測(cè)這類錯(cuò)誤的自動(dòng)方式。但有兩類錯(cuò)誤是常見的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論