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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

12、點 3.14 新的語言元素 3.15 新的IDE工具 3.16 小結 313.1 簡介 計算機圖形:既可以是由計算機生成的好萊塢影片,也可以是一個復雜的視頻游戲,一個虛擬的現(xiàn)實環(huán)境,顯示器上一個圖形樣式的靜態(tài)圖像,或一個由線條構建的簡單圖像。323.2 對象、方法、屬性和類的類比 在C#中,new用來為程序員提供將要使用的新建對象。使用方法在術語上稱為“調用”方法。除了方法,對象還具有屬性。不能調用屬性 。333.3 第一次繪圖 現(xiàn)在創(chuàng)建一個單擊按鈕時在圖片框中顯示兩個矩形的程序。下面是代碼清單: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)建程序 基本步驟如下:進入C# IDE。創(chuàng)建一個新的Windows Application工程。按上面的方法設置工程選項。在窗體上添加一個按鈕和一個圖片框。單擊圖片框,將它的Size屬性改為150,200。將圖片框的

14、BackColor屬性改為合適的顏色。如果需要,可以改變窗體標題的文字。雙擊按鈕并插入繪圖指令。 353.5 圖形坐標系統(tǒng) C#圖形是基于像素的。像素是屏幕上的小點,可以用來設置特定的顏色。每個像素都由從零開始的一對數(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#還提供了繪制一系列形狀的工具。例如:線條。橢圓(即卵形)也包括圓形。實心矩形和橢圓。來自文件的圖像。383.8 顏色 在C#中,大約有150種命名的顏色。下面列舉一些主要的顏色和一些罕用的顏色:Black Violet BlueIndigo Green YellowOrange Red GrayPurple White FirebrickLemonChiffon Maroon OliveDrab393.9 順序概念和語句 當程序中有很多語句時,它們按從屏幕的頂部到底部的順序來執(zhí)行。 通常,C#程序由一系列的語句構成。語句有很多種類

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

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

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

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

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

21、, j = 3; string s, note = Answer is: ; s = note + i + j; s的值是多少?有兩種可能性: 答案是:23,兩個+運算符均作用于字符串。 答案是:5,第二個+使兩個數(shù)字相加。 事實上,將發(fā)生第一種情況。C#工作的順序是從左到右。第一個+生成字符串“Answer is: 2”。然后第二個+將3連入結尾。不過,如果使用:s = note + (i + j);則先計算2 + 3,得到5。最后才發(fā)生字符串連接。返回目錄594.10 字符串和數(shù)字之間的轉換 使用ToString方法轉換數(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方法返回一個字符串??梢酝ㄟ^將此字符串存儲在一個變量中或以其他方式來使用它。返回目錄604.11 文本框和標簽 文本框可從工具箱中選擇并拖放到窗體上。文本框具有非常多的屬性,但最主要的屬性是Text,供用戶鍵入字符串。 標簽將為用戶顯示一些幫助信息,通常通過屬性窗口在設計時設置標簽的屬性。 返回目錄614.12 數(shù)字之間的轉換 從一種類型的數(shù)值轉換為另一種類型最常見的情況是將一個i

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

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

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

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

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

28、.DrawRectang(100, 100, 40, 40);paper.DrawRectang(100, 100, 20, 20); 注意,正方形的大小是20、40和60像素,它們的左上角都處于同一點。 755.3 第一個方法 以下是一個名為Logo 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 調用方法 在C#中,通過給出方法的名稱和括號中的參數(shù)列表來調用private方法。在上面的程序中,第一個調用是: DrawLogo(paper, myPen, 10, 20); 該語句有兩個效果:參數(shù)值自動傳遞給方法。程序跳到方法的主體部分同時執(zhí)行這部分語句。775.5 傳遞參數(shù) 理解參數(shù)如何傳送給方法是很重要的。傳遞按照從左到右的順序發(fā)生。調用必須提供參數(shù)的正確數(shù)值和類型。 在C#中將數(shù)據(jù)項傳遞給方法共有兩種途徑:值傳遞調用傳遞 785.6 形參和實參 在許多語言中,調用者提供的是“實參”(actual parameters),

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

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

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

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

35、問參數(shù)的當前值。在這種情況下,使用關鍵字ref。調用方法將一個全新的值放到參數(shù)中,而不需要訪問它的當前值。在這種情況下,使用關鍵字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 一個使用ref的交換方法 編寫方法交換兩個變量的值是使用參數(shù)的一個典型例子。首先給出沒有使用方法的程序代碼: aCopy = a; a = b; b = aCopy;注意如果使用: a = b; b = a; 則最后a和b都被設置為b的原始值。 因此,希望將只能作用于變量a和b的代碼捆綁成一個方法。該方法共有兩個參數(shù)

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

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

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

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

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

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

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

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

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

48、初始化。使用using導入命名空間。TrackBar、Random和Timer類。1136.13 新的IDE工具 組件托盤提供那些無法在窗體上可視顯示的控件。1146.14 小結 C#系統(tǒng)中有大量可供使用的類,這也是理所應當?shù)摹3斯ぞ呦渲械目丶?,還可以使用using以及適當?shù)臉嬙旌瘮?shù)將它們集成到程序中。115第7章 選擇 7.1 簡介7.2 if語句7.3 if . else7.4 比較運算符7.5 與、或、非7.6 嵌套的if7.7 switch語句1167.8 布爾型變量7.9 編程原則7.10 編程陷阱7.11 語法要點7.12 新的語言元素7.13 小結1177.1 簡介 在程序中

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

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

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

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

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

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

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

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

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

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

59、。出錯代碼如下: 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; 程序中只有一個方法,因此問題必定出在這個方法中。在方法開始的地方插入一個斷點并單步執(zhí)行這些語句,再將光標放在兩個變量上(文本框的值)以顯示它們的值。 1559.4 常

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

溫馨提示

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

評論

0/150

提交評論