C#簡單程序設計ppt課件_第1頁
C#簡單程序設計ppt課件_第2頁
C#簡單程序設計ppt課件_第3頁
C#簡單程序設計ppt課件_第4頁
C#簡單程序設計ppt課件_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1C#應用程序設計教程應用程序設計教程2本課程的前序課程:本課程的前序課程:大學本??朴嬎銠C導論大學本??朴嬎銠C導論 本課程主要講述內容:本課程主要講述內容:WindowsWindows客戶端客戶端應用程序設計應用程序設計 3本書詳細內容本書詳細內容第第1章章 簡單程序設計簡單程序設計 第第2章章 數(shù)據(jù)類型數(shù)據(jù)類型 第第3章章 C#面向對象編程基礎面向對象編程基礎 第第4章章 程序調試與異常處理程序調試與異常處理 第第5章章 C#可視化編程基礎可視化編程基礎 第第6章章 常用控件和類的使用常用控件和類的使用 第第7章章 文本編輯器的實現(xiàn)文本編輯器的實現(xiàn) 第第8章章 圖形圖像編程圖形圖像編程 第

2、第9章章 文件和流文件和流 第第10章多線程和章多線程和Socket編程初步編程初步 第第11章數(shù)據(jù)庫與章數(shù)據(jù)庫與ADO.NET4C#及及Visual Studio開發(fā)工具介紹開發(fā)工具介紹 C# 2000年年 C#誕生誕生 2001年年 C#被被ECMA(歐洲計算機制造者協(xié)會歐洲計算機制造者協(xié)會)規(guī)定為高級規(guī)定為高級 語言開發(fā)標準(語言開發(fā)標準(ECMA-334 ) 2003年年 C#被被ISO(國際標準化組織國際標準化組織)規(guī)定為高級語言開發(fā)規(guī)定為高級語言開發(fā) 標準(標準(ISO/IEC 23270 ) VS開發(fā)工具開發(fā)工具 2003年年 發(fā)布發(fā)布Visual Studio.NET 2003

3、(VS.NET2003) 2005年年11月月 發(fā)布發(fā)布Visual Studio 2005(VS2005)英文版)英文版 2006年年1月月 發(fā)布發(fā)布VS2005 Professional簡體中文版簡體中文版5 VS2005的各種版本(功能從最強到最弱)的各種版本(功能從最強到最弱) VS2005 Team 版本版本 用于大型團隊開發(fā)用于大型團隊開發(fā) VS2005 Professional版本版本 用于大中型軟件公司用于大中型軟件公司 VS2005 Standard版本版本 用于小型軟件公司用于小型軟件公司 VS2005 Express版本版本 用于業(yè)余開發(fā)者(初學者)用于業(yè)余開發(fā)者(初學者

4、) 本課的上機實驗環(huán)境本課的上機實驗環(huán)境 VS2005 Express版本版本 安裝建議安裝建議 (1)操作系統(tǒng)使用)操作系統(tǒng)使用 WindowsXP SP2 (2)至少)至少256MB內存,最好內存,最好512MB6第第1 1章章 簡單程序設計簡單程序設計 Microsoft.Net FrameWork(微軟微軟.Net架框,以下簡架框,以下簡稱稱.Net FrameWork)是微軟提出的新一代軟件開發(fā)是微軟提出的新一代軟件開發(fā)模型,是一種面向網(wǎng)絡、支持各種用戶終端的開發(fā)模型,是一種面向網(wǎng)絡、支持各種用戶終端的開發(fā)平臺環(huán)境,是生成、部署和運行所有平臺環(huán)境,是生成、部署和運行所有.NET應用程

5、應用程序的基礎。它包括以下序的基礎。它包括以下2個主要部分。個主要部分。 1.1 1.1 .NET平臺簡介平臺簡介71.1.1 公共語言運行環(huán)境公共語言運行環(huán)境 公共語言運行環(huán)境公共語言運行環(huán)境(Common Language Runtime,簡稱,簡稱CLR)是是.NET框架的基礎??蚣艿幕A。.NET源程序首先被編譯為微軟中間語言源程序首先被編譯為微軟中間語言(Microsoft Intermediate Language,簡稱,簡稱MSIL)代碼,形成)代碼,形成擴展名為擴展名為.exe或或.dll文件,文件,MSIL定義了一系列與定義了一系列與CPU類型無關類型無關的可移植指令集,可在

6、的可移植指令集,可在CLR中運行。擴展名為中運行。擴展名為exe或或dll的可執(zhí)的可執(zhí)行文件運行時,行文件運行時,CLR同時運行。同時運行。MSIL語言代碼不是語言代碼不是CPU可執(zhí)可執(zhí)行的機器碼,行的機器碼,CLR中的中的JIT編譯器編譯器(Just In Time)負責將)負責將MSIL代碼翻譯成機器代碼在代碼翻譯成機器代碼在CPU中運行,由中運行,由CLR來管理來管理.NET應用應用程序的運行,程序的運行,CLR提供內存管理、線程管理、遠程管理等服務,提供內存管理、線程管理、遠程管理等服務,并對程序代碼的安全和可靠性把關??删帉懺谌我庵付ú僮飨挡Τ绦虼a的安全和可靠性把關??删帉懺谌我?/p>

7、指定操作系統(tǒng)中運行的統(tǒng)中運行的CLR,凡是使用符合公共語言規(guī)范(,凡是使用符合公共語言規(guī)范(Common Language Specification, CLS)的語言開發(fā)的程序均可在其上)的語言開發(fā)的程序均可在其上運行。因此,運行。因此,.NET源程序具有平臺無關性。源程序具有平臺無關性。81.1.2 框架類庫框架類庫 為了提高開發(fā)效率,各種開發(fā)平臺都為用戶提供工為了提高開發(fā)效率,各種開發(fā)平臺都為用戶提供工具類庫,如具類庫,如C+的的MFC、JAVA的的WFC、VB的的VBRUN等。等。.NET框架提供了一個統(tǒng)一的、面向對框架提供了一個統(tǒng)一的、面向對象的、層次化的可擴展編程接口:框架類庫象的

8、、層次化的可擴展編程接口:框架類庫(Framework Class Libraries,F(xiàn)LC),使得開發(fā)),使得開發(fā)人員可以在人員可以在.NET環(huán)境下使用各種不同的語言來進行環(huán)境下使用各種不同的語言來進行應用開發(fā)。應用開發(fā)。 按照應用領域的不同,按照應用領域的不同,.NET將類庫劃分為四個部分:將類庫劃分為四個部分:9 基本類庫:提供輸入基本類庫:提供輸入/輸出、字符串操作、安全性輸出、字符串操作、安全性管理、網(wǎng)絡通信、文本管理等標準功能。管理、網(wǎng)絡通信、文本管理等標準功能。 ADO.NET:數(shù)據(jù)庫訪問及:數(shù)據(jù)庫訪問及XML類。類。 ASP.NET:Web服務和服務和Web窗體,用來建立強大

9、的窗體,用來建立強大的Web應用程序。應用程序。 Windows窗體類:窗體類:Windows窗體支持的一組類,用窗體支持的一組類,用于開發(fā)基于于開發(fā)基于Windows的圖形用戶界面應用程序。的圖形用戶界面應用程序。 總之,總之,.NET開發(fā)框架在公共語言運行時的基礎上,開發(fā)框架在公共語言運行時的基礎上,為開發(fā)者提供了完善的類庫,開發(fā)者可使用多種語為開發(fā)者提供了完善的類庫,開發(fā)者可使用多種語言及言及Visual Studio開發(fā)工具來快速構建下一代的網(wǎng)開發(fā)工具來快速構建下一代的網(wǎng)絡應用。絡應用。101.2 C#1.2 C#語言特點語言特點v Microsoft.Net FrameWorkMic

10、rosoft.Net FrameWork是微軟提出是微軟提出的新一代軟件開發(fā)模型的新一代軟件開發(fā)模型v C#C#語言是語言是.Net FrameWork.Net FrameWork中新一代的開中新一代的開發(fā)工具發(fā)工具v C#C#語言編寫的源程序語言編寫的源程序, ,被被C#C#語言編譯器語言編譯器編譯為中間語言代碼編譯為中間語言代碼(MSIL),(MSIL),由通用語由通用語言運行環(huán)境言運行環(huán)境(CLR)(CLR)中的既時編譯器中的既時編譯器(JIT)(JIT)將中間語言代碼翻譯為將中間語言代碼翻譯為CPUCPU可執(zhí)行的機可執(zhí)行的機器碼,由器碼,由CPUCPU執(zhí)行執(zhí)行 11CLRCLR為為C#

11、C#語言中間語言代碼運行提供了一種運語言中間語言代碼運行提供了一種運行時環(huán)境,行時環(huán)境,C#C#語言的語言的CLRCLR和和JAVAJAVA語言的虛擬機類似。語言的虛擬機類似。這種執(zhí)行方法使運行速度變慢,但帶來其他一些好這種執(zhí)行方法使運行速度變慢,但帶來其他一些好處,主要有:處,主要有: v通用語言規(guī)范通用語言規(guī)范 v自動內存管理自動內存管理 v交叉語言處理交叉語言處理 v更加安全更加安全 v版本支持版本支持 v完全面向對象完全面向對象 121.3 1.3 編寫控制臺應用程序編寫控制臺應用程序 【例【例1.1】程序的代碼如下:程序的代碼如下:/在屏幕輸出一行歡迎信息,從第一個在屏幕輸出一行歡迎

12、信息,從第一個/開始到本行結束是解釋開始到本行結束是解釋using System; /引用命名空間引用命名空間Systemnamespace MyApplication /聲明命名空間聲明命名空間MyApplication class Test /class是關鍵字,表示定義一個類,是關鍵字,表示定義一個類,Test是類名是類名 /主函數(shù)主函數(shù)(方法方法)Main,必須是靜態(tài)的,必須是靜態(tài)的 static void Main(string args) /語句,調用方法語句,調用方法WriteLine輸出字符輸出字符 Console.WriteLine(歡迎使用歡迎使用C#!); /大括號必須成

13、對出現(xiàn)大括號必須成對出現(xiàn)13用微軟用微軟Visual C#2005 Express Edition(Visual C#2005 Express Edition(以后簡稱以后簡稱VS2005)VS2005)生成控制臺程序,具體步驟如下:生成控制臺程序,具體步驟如下:(1 1)運行運行VS2005程序,單擊菜單程序,單擊菜單“文件文件(F)|新建項目新建項目(P)”菜菜單項,打開單項,打開“新建項目新建項目”對話框如下圖。在對話框如下圖。在模板模板(T) 列表列表框中選擇框中選擇控制臺應用程序控制臺應用程序,單擊,單擊確定確定按鈕,創(chuàng)建項目。按鈕,創(chuàng)建項目。 14(2)出現(xiàn)如下圖界面,按圖中那樣修

14、改出現(xiàn)如下圖界面,按圖中那樣修改Program.cs文件。文件。編寫一個應用程序可能包含多個文件,才能生成可編寫一個應用程序可能包含多個文件,才能生成可執(zhí)行文件,所有這些文件的集合叫做一個項目,項執(zhí)行文件,所有這些文件的集合叫做一個項目,項目名稱可以是任何標識符,本項目名稱為目名稱可以是任何標識符,本項目名稱為ConsoleApplication1。 1516(3)按按CTRL+F5鍵,運行程序,運行結果如圖鍵,運行程序,運行結果如圖1.3。需。需要注意的是,和以往使用過的絕大多數(shù)編譯器不同,要注意的是,和以往使用過的絕大多數(shù)編譯器不同,C#編譯器只執(zhí)行編譯過程,不經(jīng)過鏈接直接生成編譯器只執(zhí)行

15、編譯過程,不經(jīng)過鏈接直接生成擴展名為擴展名為.exe的可執(zhí)行文件或擴展名為的可執(zhí)行文件或擴展名為.dll的動態(tài)鏈的動態(tài)鏈接庫,接庫,C#編譯器中不包含鏈接器。編譯器中不包含鏈接器。 17 (4)單擊菜單單擊菜單文件文件(F)|全部保存全部保存(L)菜單項,打開菜單項,打開保存保存項目項目對話框,在對話框,在名稱名稱(N) 編輯框中鍵入保存的項編輯框中鍵入保存的項目文件名稱目文件名稱:控制臺程序,在控制臺程序,在解決方案名稱解決方案名稱(M) 編編輯框中鍵入保存的解決方案名稱輯框中鍵入保存的解決方案名稱:例例1_1。單擊。單擊位置位置(L) 編輯框后的編輯框后的瀏覽瀏覽(B)按鈕,選擇保存的文件

16、的按鈕,選擇保存的文件的路徑,在該路徑下將創(chuàng)建文件夾例路徑,在該路徑下將創(chuàng)建文件夾例1_1,項目的所有,項目的所有文件都保存到這個文件夾下。這里請注意,必須保文件都保存到這個文件夾下。這里請注意,必須保存項目的所有文件,將來才能重新打開項目。如僅存項目的所有文件,將來才能重新打開項目。如僅保存保存Program.cs,將不能重新打開項目。,將不能重新打開項目。181.4 1.4 程序結構程序結構 C#程序結構是指構成應用程序的必要元素,包程序結構是指構成應用程序的必要元素,包括程序組成要素、語法規(guī)則及書寫格式等。括程序組成要素、語法規(guī)則及書寫格式等。1.4.1 C#程序的組成要素程序的組成要素

17、 例例1.1是一個簡單的控制臺應用程序,其功能是是一個簡單的控制臺應用程序,其功能是在屏幕上輸出一行字:在屏幕上輸出一行字:歡迎使用歡迎使用C#!。分析這。分析這個程序,可以看出個程序,可以看出C#程序有命名空間、類和方法、程序有命名空間、類和方法、語句和大括號等組成要素。語句和大括號等組成要素。 191.標識符標識符 標識符是程序中為一些要素所定義的名稱,如例標識符是程序中為一些要素所定義的名稱,如例1.1中的命名空間名中的命名空間名MyApplication、類名、類名Test、方法名、方法名Main等。程序中所有定義的標識符都有實際意義是等。程序中所有定義的標識符都有實際意義是很好的編程

18、習慣。標識符命名時必須遵循如下命名規(guī)很好的編程習慣。標識符命名時必須遵循如下命名規(guī)則:則: 由字母、數(shù)字、下劃線由字母、數(shù)字、下劃線_組成,組成,C#語言中標志符允語言中標志符允許包含中文字符。許包含中文字符。 第一個字符必須是字母、中文字符或下劃線,不能是第一個字符必須是字母、中文字符或下劃線,不能是數(shù)字或除下劃線外的特殊字符。數(shù)字或除下劃線外的特殊字符。 C#對字母大、小寫敏感,兩個標識符即使只是對應對字母大、小寫敏感,兩個標識符即使只是對應字母大、小寫不同,也是不同的標識符,這點和字母大、小寫不同,也是不同的標識符,這點和VB 語言不同。語言不同。 標識符不能與關鍵字同名。標識符不能與關

19、鍵字同名。20 如例如例1.1程序中的程序中的MyApplication、Test、Main等都是等都是合法的標識符。而下面的標識符都是非法標識符。合法的標識符。而下面的標識符都是非法標識符。 2example /非法起始字符,起始字符不能是數(shù)字非法起始字符,起始字符不能是數(shù)字 #200 /非法起始字符,起始字符不能是特殊字符非法起始字符,起始字符不能是特殊字符 Hello* /含有非法字符含有非法字符“*”,標識符中不能有,標識符中不能有“*” if /if是關鍵字,關鍵字不能作為標識符是關鍵字,關鍵字不能作為標識符 Hello World /含有非法字符空格標識符中不能有空格含有非法字符空

20、格標識符中不能有空格212. 關鍵字關鍵字 在在C#代碼中的關鍵字是由代碼中的關鍵字是由C#語言定義并使用的具有特語言定義并使用的具有特定意義的字符串,它們不能在程序中用作標識符。在定意義的字符串,它們不能在程序中用作標識符。在VS2005環(huán)境的代碼視圖中關鍵字默認以藍色顯示。如例環(huán)境的代碼視圖中關鍵字默認以藍色顯示。如例1.1代碼中的代碼中的using、namespace、class、static、void等,均為等,均為C#的關鍵字。的關鍵字。3. 類和方法類和方法 C#語言用類來組織程序的變量和方法,所有變量和方法必語言用類來組織程序的變量和方法,所有變量和方法必須定義在一個類中。例須定

21、義在一個類中。例1.1程序程序Class Test語句定義了一個語句定義了一個名為名為Test的類,其中關鍵字的類,其中關鍵字Class表示定義一個類,表示定義一個類,Test是類是類名。在類名。在類Test中聲明了一個名為中聲明了一個名為Main的方法,用來指示應的方法,用來指示應用程序從該處開始執(zhí)行。用程序從該處開始執(zhí)行。C#要求每個程序必須且只能有一要求每個程序必須且只能有一個個Main方法,該方法必須是靜態(tài)的方法,該方法必須是靜態(tài)的(用用static修飾修飾),所謂靜,所謂靜態(tài)方法表示程序運行后,該方法就已存在,可以使用,態(tài)方法表示程序運行后,該方法就已存在,可以使用,Main方法必須

22、放在某一個類中。類中還可以定義其他方法。方法必須放在某一個類中。類中還可以定義其他方法。有關類和方法的詳細內容將在后面章節(jié)詳細介紹。有關類和方法的詳細內容將在后面章節(jié)詳細介紹。224. 命名空間命名空間 命名空間是命名空間是C#語言提供的對類庫程序和程序員編寫的語言提供的對類庫程序和程序員編寫的程序分層組織方式,不同程序代碼可以分類放到不同程序分層組織方式,不同程序代碼可以分類放到不同的命名空間中,為使用和維護這些程序提供了方便,的命名空間中,為使用和維護這些程序提供了方便,使用命名空間的另一個原因是減少程序中標志符同名使用命名空間的另一個原因是減少程序中標志符同名的可能性,不同命名空間中的標

23、志符可以同名,同一的可能性,不同命名空間中的標志符可以同名,同一命名空間中的標志符不能同名。命名空間有兩種,一命名空間中的標志符不能同名。命名空間有兩種,一種是系統(tǒng)預定義的命名空間,它提供系統(tǒng)預定義的基種是系統(tǒng)預定義的命名空間,它提供系統(tǒng)預定義的基本數(shù)據(jù)類型和程序代碼,供設計程序時使用,由本數(shù)據(jù)類型和程序代碼,供設計程序時使用,由using關鍵字導入。如例關鍵字導入。如例1.1程序中程序中“using System;”語句,語句,就導入了就導入了System命名空間,它提供了構建應用程序時命名空間,它提供了構建應用程序時所需要的所有系統(tǒng)功能,代碼中的所需要的所有系統(tǒng)功能,代碼中的“Consol

24、e.WriteLine”就是該命名空間提供的就是該命名空間提供的Console類類(控制臺類控制臺類)中定義的在屏幕輸出一行字符的方法中定義的在屏幕輸出一行字符的方法WriteLine。在創(chuàng)建項目時,。在創(chuàng)建項目時,VS2005會自動生成導入會自動生成導入該命名空間的代碼,并且放在程序的第一行。該命名空間的代碼,并且放在程序的第一行。23 另一種是用另一種是用namespace關鍵字聲明的用戶自定義命名關鍵字聲明的用戶自定義命名空間,例空間,例1.1中的中的“MyApplication”就是用戶自定義就是用戶自定義命名空間。全局命名空間應是源文件命名空間。全局命名空間應是源文件using語句后

25、的語句后的第一條語句。在一個命名空間聲明中還可以聲明該第一條語句。在一個命名空間聲明中還可以聲明該命名空間的子命名空間。在同一命名空間中,不允命名空間的子命名空間。在同一命名空間中,不允許出現(xiàn)同名命名空間成員或同名的類。例子如下:許出現(xiàn)同名命名空間成員或同名的類。例子如下: using System;namespace N1 namespace N2 /命名空間命名空間N1的子命名空間成的子命名空間成員員N2 class A /在在N2命名空間定義的類不應重名命名空間定義的類不應重名 static void f1(); class B static void f2();24也可以采用非嵌套的語

26、法來實現(xiàn)以上命名空間也可以采用非嵌套的語法來實現(xiàn)以上命名空間:namespace N1.N2 /類類A、B在命名空間在命名空間N1.N2中中 class A static void f1(); class B static void f2(); 不同文件中的程序,如果使用相同命名空間名稱聲不同文件中的程序,如果使用相同命名空間名稱聲明,表示這些程序在同一個命名空間中。如在一個明,表示這些程序在同一個命名空間中。如在一個程序中,需引用其他命名空間的類或函數(shù),可以使程序中,需引用其他命名空間的類或函數(shù),可以使用語句用語句using,例如需使用上邊定義的方法,例如需使用上邊定義的方法f1()和和f2

27、(),可以采用如下代碼:可以采用如下代碼:25using N1.N2;class WelcomeApp A.f1(); using N1.N2是告訴應用程序到哪里找到類是告訴應用程序到哪里找到類A。如。如果不使用果不使用using語句,應使用如下形式:語句,應使用如下形式:class WelcomeApp /表示類表示類A在命名空間在命名空間N1.N2中中 N1.N2.A.f1(); 命名空間聲明不是必須的,例如在上述程序中,可命名空間聲明不是必須的,例如在上述程序中,可以不聲明以不聲明“MyApplication”這一用戶自定義命名空這一用戶自定義命名空間,程序照樣可以正常運行,系統(tǒng)將所定義

28、的程序間,程序照樣可以正常運行,系統(tǒng)將所定義的程序放到默認的命名空間中。但在實際的程序開發(fā)過程放到默認的命名空間中。但在實際的程序開發(fā)過程中,一個程序往往由許多模塊組成,使用命名空間中,一個程序往往由許多模塊組成,使用命名空間有利于程序的組織和管理。有利于程序的組織和管理。265.語句語句 語句就是語句就是C#程序中執(zhí)行操作的指令。在程序中執(zhí)行操作的指令。在C#語言語語言語句必須用分號句必須用分號;結束,這也是與結束,這也是與VB不同的地方。不同的地方。可以一行上書寫多條語句,也可以將一條語句書寫可以一行上書寫多條語句,也可以將一條語句書寫在多行上。當語句中包含不同層次的內容時,在多行上。當語

29、句中包含不同層次的內容時,C#用點用點“.”操作符表示從屬關系。比如例操作符表示從屬關系。比如例1.1代碼第代碼第6行通常應該寫成如下形式:行通常應該寫成如下形式: System.Console.WriteLine(歡迎使用歡迎使用C#!); 其中,其中,“System”表示一個命名空間,表示一個命名空間,“Console”表示該命名空間中的一個類,表示該命名空間中的一個類,“WriteLine”表示該表示該類中的一個方法。不過,因為在第類中的一個方法。不過,因為在第2行中使用了行中使用了using指令,已經(jīng)導入了指令,已經(jīng)導入了“System”命名空間,所以命名空間,所以使用該空間中的類時,

30、不必顯示給出命名空間的名使用該空間中的類時,不必顯示給出命名空間的名稱。稱。276. 大括號大括號 在在C#中,大括號中,大括號和和是一種范圍標志,是組織是一種范圍標志,是組織代碼的一種方式,用于標識應用程序中邏輯上有緊密代碼的一種方式,用于標識應用程序中邏輯上有緊密聯(lián)系的一段代碼的開始與結束,聯(lián)系的一段代碼的開始與結束,和和必須成對出必須成對出現(xiàn)。大括號可以嵌套,以表示應用程序中的不同層次,現(xiàn)。大括號可以嵌套,以表示應用程序中的不同層次,例如,在例例如,在例1.1程序中命名空間程序中命名空間MyApplication下的下的大括號標識該命名空間的代碼范圍,類大括號標識該命名空間的代碼范圍,類

31、Test下的大下的大括號標識該類的代碼范圍,方法括號標識該類的代碼范圍,方法Main下的大括號,下的大括號,標識該方法的范圍。并且類標識該方法的范圍。并且類Test包含在命名空間包含在命名空間MyApplication中,方法中,方法Main又包含在類又包含在類Test中。中。281.4.2 C#程序的格式程序的格式 C#程序中的代碼應按照一定的格式書寫,代碼格式程序中的代碼應按照一定的格式書寫,代碼格式有兩類:一類屬于有兩類:一類屬于C#的語法規(guī)則,這類格式必須遵的語法規(guī)則,這類格式必須遵守;還有一類屬于結構格式,這在程序設計中不是必守;還有一類屬于結構格式,這在程序設計中不是必須的,但統(tǒng)一

32、結構格式的書寫方法有助于使代碼層次須的,但統(tǒng)一結構格式的書寫方法有助于使代碼層次清晰,從而提高程序的可讀性,提高編程效率。清晰,從而提高程序的可讀性,提高編程效率。 1. 縮進與空格縮進與空格 縮進用于表示代碼的結構層次,這在程序設計時不是縮進用于表示代碼的結構層次,這在程序設計時不是必須的,但是縮進可以清晰地表示程序的結構層次。必須的,但是縮進可以清晰地表示程序的結構層次。例如在例例如在例1.1程序中,命名空間及標識其范圍的一對程序中,命名空間及標識其范圍的一對大括號頂格書寫,命名空間中的類及標識其范圍的一大括號頂格書寫,命名空間中的類及標識其范圍的一對大括號向內縮進一個制表位,類中的方法及

33、標識其對大括號向內縮進一個制表位,類中的方法及標識其范圍的一對大括號向內縮進兩個制表位,方法中的語范圍的一對大括號向內縮進兩個制表位,方法中的語句向內縮進三個制表位。句向內縮進三個制表位。292. 注釋注釋例例1.1程序的第程序的第1行是注釋,它指出了該程序的文件名及該程序的行是注釋,它指出了該程序的文件名及該程序的主要功能。在程序代碼中加上必要的注釋可以提高程序的可讀主要功能。在程序代碼中加上必要的注釋可以提高程序的可讀性,便于維護。一般情況下,每定義一個類、方法和結構等,性,便于維護。一般情況下,每定義一個類、方法和結構等,都要在頭部用注釋說明其用途、使用方法、參數(shù)意義等。都要在頭部用注釋

34、說明其用途、使用方法、參數(shù)意義等。C#中中注釋有兩種:單行注釋:以注釋有兩種:單行注釋:以“/”開始,本行其后的所有字符都開始,本行其后的所有字符都是注釋信息,注釋到行尾結束。多行注釋:以是注釋信息,注釋到行尾結束。多行注釋:以“/*”開頭、開頭、“*/”結束,可以換行,其間的字符均被視作注釋字符。例如,一個結束,可以換行,其間的字符均被視作注釋字符。例如,一個文件的頭部都應使用注釋增加如下信息:文件的頭部都應使用注釋增加如下信息:/*版權信息版權信息*文件名稱文件名稱*程序功能簡介程序功能簡介*作者,完成日期作者,完成日期*/301.5 基本數(shù)據(jù)類型和表達式基本數(shù)據(jù)類型和表達式 本節(jié)先介紹本

35、節(jié)先介紹C#語言內置數(shù)值類型、字符類型和布爾語言內置數(shù)值類型、字符類型和布爾類型數(shù)據(jù),然后介紹表達式和運算符。類型數(shù)據(jù),然后介紹表達式和運算符。1.5.1 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 本節(jié)介紹本節(jié)介紹C#語言內置的基本數(shù)據(jù)類型。根據(jù)數(shù)據(jù)的語言內置的基本數(shù)據(jù)類型。根據(jù)數(shù)據(jù)的性質可分為四類,即數(shù)值型、字符型、布爾型和對性質可分為四類,即數(shù)值型、字符型、布爾型和對象型。本節(jié)不介紹內置對象類型,有關內容在后續(xù)象型。本節(jié)不介紹內置對象類型,有關內容在后續(xù)章節(jié)介紹。章節(jié)介紹。 1. 數(shù)值類型數(shù)值類型 數(shù)值類型有整數(shù)與實數(shù)類型兩種,每種類型所占內數(shù)值類型有整數(shù)與實數(shù)類型兩種,每種類型所占內存位數(shù)、其取值范圍見

36、下表所示。存位數(shù)、其取值范圍見下表所示。31類型名稱位數(shù)取值范圍sbyte字節(jié)型8-128127byte無符號字節(jié)型80255short短整型16-3276832767ushort無符號短整型16065535int整型32-21474836482147483647uint無符號整型3204294967295long長整型64-92233720368547758089223372036854775807ulong無符號長整型64018446744073709551615float單精度型32-3.40282347E+383.40282347E+38double雙精度型64-1.797631348

37、6231570E+3081.7976313486231570E+308decimal十進制小數(shù)型128-7.922816251426433759E+287.922816251426433759E+2832 整數(shù)整數(shù) 整數(shù)可以用十進制表示,如整數(shù)可以用十進制表示,如123、45678等;也可以等;也可以用十六進制表示,如用十六進制表示,如0 x12、0X3A等,即在數(shù)字前面等,即在數(shù)字前面加加“0 x”或或“0X”。C#的整數(shù)沒有八進制表示形式。的整數(shù)沒有八進制表示形式。 一般說來,整型常量值的默認數(shù)據(jù)類型是一般說來,整型常量值的默認數(shù)據(jù)類型是int型,但型,但當其值超出了當其值超出了int型的

38、取值范圍時,它將根據(jù)其數(shù)值型的取值范圍時,它將根據(jù)其數(shù)值大小相應被視為一個大小相應被視為一個unit型、型、long型或型或ulong型。也型。也可在整型常量后加后綴將它顯示說明為指定類型,可在整型常量后加后綴將它顯示說明為指定類型,例如后綴例如后綴U(或(或u)指定整數(shù)為)指定整數(shù)為uint或或ulong型(視其型(視其值大小而定)。如果在整型常量后同時加上這兩種值大小而定)。如果在整型常量后同時加上這兩種后綴后綴UL,它就是一個,它就是一個ulong型常量。型常量。 123456L /long類型類型 25u /uint類型類型 25ul /ulong類型類型33 浮點數(shù)浮點數(shù) 浮點型常量

39、只能用十進制表示,共有兩種表示形式:浮點型常量只能用十進制表示,共有兩種表示形式:一般形式和指數(shù)表示形式。一般形式又稱小數(shù)表示形一般形式和指數(shù)表示形式。一般形式又稱小數(shù)表示形式,浮點數(shù)由整數(shù)和小數(shù)兩部分組成,其中整數(shù)部分式,浮點數(shù)由整數(shù)和小數(shù)兩部分組成,其中整數(shù)部分為為0時在實際使用時可省略。例如:時在實際使用時可省略。例如:2.6,.9,8.0,小,小數(shù)部分不能省略,此與數(shù)部分不能省略,此與C+語言不同。如語言不同。如8.0不能寫成不能寫成8.。指數(shù)表示形式時,浮點數(shù)由尾數(shù)、字母。指數(shù)表示形式時,浮點數(shù)由尾數(shù)、字母E(或(或e)、)、指數(shù)部分組成。例如:指數(shù)部分組成。例如:2.3E12,.2

40、5E6,-0.35E-5。 浮點型常量默認類型為浮點型常量默認類型為double型,如果要將其說明為型,如果要將其說明為float型,需在其值后加后綴型,需在其值后加后綴F(或(或f)。如果要將其說)。如果要將其說明為明為decimal型,需在其值后加型,需在其值后加M(或(或m)。也可在數(shù))。也可在數(shù)值后加上后綴值后加上后綴D(或(或d)將其顯示說明為)將其顯示說明為double型。例型。例如:如:2.8f,6.9D,4.6E7M。342. 字符類型(字符類型(char) 字符型數(shù)據(jù)在內存中占字符型數(shù)據(jù)在內存中占2字節(jié),包括數(shù)字字符、英文字節(jié),包括數(shù)字字符、英文字母、表達符號、中文等,數(shù)據(jù)范

41、圍是字母、表達符號、中文等,數(shù)據(jù)范圍是065535之間之間的的Unicode字符集中的單個字符。采用字符集中的單個字符。采用Unicode字符集字符集可以表示世界上大多數(shù)語言。字符型數(shù)據(jù)通常情況下可以表示世界上大多數(shù)語言。字符型數(shù)據(jù)通常情況下就是用單引號括起來的一個字符。例如:就是用單引號括起來的一個字符。例如: A,1,*,# 此外,此外,C#語言還提供了一些轉義字符,以反斜杠語言還提供了一些轉義字符,以反斜杠“”開頭,后跟一個字符或開頭,后跟一個字符或Unicode碼。書中表碼。書中表1-2列出了列出了C#語言中常用的轉義字符。語言中常用的轉義字符。3. 布爾型布爾型 布爾型數(shù)據(jù)表示布爾邏

42、輯量,只有兩個值布爾型數(shù)據(jù)表示布爾邏輯量,只有兩個值“true”(真)和(真)和“false”(假)。布爾型數(shù)據(jù)為程序進行復(假)。布爾型數(shù)據(jù)為程序進行復雜的判斷提供了數(shù)據(jù)類型依據(jù)。和雜的判斷提供了數(shù)據(jù)類型依據(jù)。和C語言不同,不能語言不同,不能認為認為0是是false,其他值是,其他值是true。351.5.2 常量和變量常量和變量1. 變量變量 變量是指在程序運行過程中值可以發(fā)生變化的量。變量是指在程序運行過程中值可以發(fā)生變化的量。C#中要求中要求變量在使用前必須先聲明后使用。變量名必須為合法標識符,變量在使用前必須先聲明后使用。變量名必須為合法標識符,有關變量的命名規(guī)則參見有關變量的命名規(guī)

43、則參見1.4.1小節(jié)中的標識符命名規(guī)則。變量小節(jié)中的標識符命名規(guī)則。變量定義的一般形式為:類型定義的一般形式為:類型 變量名表;變量名表; 其中變量名表可以是其中變量名表可以是單個變量,也可以是多個變量的列表。下面是一些合法的變量單個變量,也可以是多個變量的列表。下面是一些合法的變量定義形式。定義形式。char ch; /聲明了一個字符型變量聲明了一個字符型變量chint num,sum; /聲明了兩個整型變量,聲明了兩個整型變量,num和和sumdouble total,salary; /聲明了兩個雙精度變量聲明了兩個雙精度變量total和和salary此外,也可以在定義變量時對其進行初始化

44、,例如:此外,也可以在定義變量時對其進行初始化,例如:char ch = a; /定義了一個字符型變量定義了一個字符型變量ch,并為其賦初值,并為其賦初值“a”int x = 50,y; /定義了兩個整型變量定義了兩個整型變量x和和y,并為,并為x賦初值為賦初值為50/常量常量1.25后加了后加了f是將值是將值1.25強制轉換為強制轉換為float型型(默認情況下默認情況下/1.25為為double型型) float ff=1.25f; /定義了一個單精度變量定義了一個單精度變量ff,并為其賦初值為,并為其賦初值為1.25362. 常量:常量: 常量是在程序運行中值保持不變的量。常量有直接常量

45、和常量是在程序運行中值保持不變的量。常量有直接常量和符號常量兩種。符號常量兩種。 直接常量:直接常量: 在在1.5.1節(jié)中介紹的各種類型的常數(shù),其取值直接反節(jié)中介紹的各種類型的常數(shù),其取值直接反映了其類型,故稱作直接常量。映了其類型,故稱作直接常量。 符號常量:符號常量使用符號常量:符號常量使用const或或readonly關鍵字來定義關鍵字來定義,格式如格式如下:下:const 類型類型 符號常量名符號常量名=常量表達式;常量表達式; “常量表達式常量表達式”的意義在于該表達式不能包含變量及函數(shù)等值會的意義在于該表達式不能包含變量及函數(shù)等值會發(fā)生變化的內容。常量表達式中可以包含其他已定義常量

46、。例如:發(fā)生變化的內容。常量表達式中可以包含其他已定義常量。例如:const int min=-32767;/合法合法const double PI=3.14;/合法合法const double TT=PI*min;/合法,表達式包含兩個已定義常量合法,表達式包含兩個已定義常量int RR=10; const double SS=PI*RR*RR;/不合法,表達式中包含變量不合法,表達式中包含變量371.5.3 運算符和表達式運算符和表達式 運算符是表示實現(xiàn)某種運算的符號。表達式是由變運算符是表示實現(xiàn)某種運算的符號。表達式是由變量、常量、運算符和圓括號等按一定的規(guī)則組成的量、常量、運算符和圓括

47、號等按一定的規(guī)則組成的式子。表達式經(jīng)過運算后產(chǎn)生一個結果,其類型由式子。表達式經(jīng)過運算后產(chǎn)生一個結果,其類型由數(shù)據(jù)和運算符共同決定。數(shù)據(jù)和運算符共同決定。 1. 算術運算符和算術表達式算術運算符和算術表達式 下表按列出了下表按列出了C#中的算術運算符,其中中的算術運算符,其中“-”運算運算符在單目運算(單個操作數(shù))中作取負號運算,在符在單目運算(單個操作數(shù))中作取負號運算,在雙目運算(兩個操作數(shù))中作減法運算。以下介紹雙目運算(兩個操作數(shù))中作減法運算。以下介紹的操作符的操作數(shù)可為整數(shù)類型和實數(shù)類型,結果的操作符的操作數(shù)可為整數(shù)類型和實數(shù)類型,結果仍為數(shù)值型數(shù)據(jù)。(表仍為數(shù)值型數(shù)據(jù)。(表1-3

48、中,設變量中,設變量a、b、c為整為整型,值為型,值為5)38運算符含義優(yōu)先級 實例結果-負號1b=-ab值為-5+自增(用法同C/C+)2b=a+b值為5,a為6-自減(用法同C/C+)2b=a-B值為5,a為4*乘法3b=a*ab值為25/除法3b=a/2b值為2.5%取余3b=a % 2,c=a%1.5b值為1,c值為0.5+加法4b=a+ab值為10-減法4b=a-ab值為0392. 關系運算符和關系表達式關系運算符和關系表達式 關系運算符用于對兩個操作數(shù)進行比較,判斷關系是否成立,關系運算符用于對兩個操作數(shù)進行比較,判斷關系是否成立,結果為邏輯值。若成立則結果為結果為邏輯值。若成立則

49、結果為true,否則為,否則為false。關系運算。關系運算符有六種:符有六種:、=、 b) & (x y);bool mark = (a b) & (!(x y); /mark=true/兩個條件中一個條件成立就為兩個條件中一個條件成立就為true,因此,因此mark=truemark = (a b) | (xy);4. 條件運算符和條件表達式條件運算符和條件表達式條件運算符是條件運算符是C#中唯一的三元運算符,其一般格式為:中唯一的三元運算符,其一般格式為:布爾表達式?表達式布爾表達式?表達式1:表達式:表達式2布爾表達式可以是關系表達式或邏輯表達式。運算時首先計算布爾表達

50、式可以是關系表達式或邏輯表達式。運算時首先計算布爾表達式的值,如果為布爾表達式的值,如果為true,則運算結果為表達式,則運算結果為表達式1的值,的值,如果為如果為false,運算結果為表達式,運算結果為表達式2的值。例如:的值。例如:int a=25,b=10,c;c=ab?a:b; /c的值為的值為25,使得,使得c取取a和和b中較大的值。中較大的值。415. 賦值運算符和賦值表達式賦值運算符和賦值表達式 賦值運算符包括單賦值運算符和復合賦值運算符。賦值運算符包括單賦值運算符和復合賦值運算符?!?”是簡是簡單賦值運算符,其作用是將單賦值運算符,其作用是將“=”右邊表達式的值賦給其左邊右邊表

51、達式的值賦給其左邊的操作數(shù)(稱左操作數(shù),通常為一個變量)。復合運算符是由的操作數(shù)(稱左操作數(shù),通常為一個變量)。復合運算符是由“=”與其他運算符結合在一起組成的,如與其他運算符結合在一起組成的,如“+=”、“-=”、“*=”、“/=”等。例如:等。例如:“x+=y”相當于相當于“x=x+y”。6. 溢出檢查操作符溢出檢查操作符checked和和unchecked 在進行整型算術運算在進行整型算術運算(如如+、-、*、/等等)或從一種整型顯式轉換或從一種整型顯式轉換到另一種整型時,有可能出現(xiàn)運算結果超出這個結果所屬類型到另一種整型時,有可能出現(xiàn)運算結果超出這個結果所屬類型值域的情況,這種情況稱之

52、為溢出。整型算術運算表達式可以值域的情況,這種情況稱之為溢出。整型算術運算表達式可以使用使用checked或或unchecked溢出檢查操作符,決定在編譯和運行溢出檢查操作符,決定在編譯和運行時是否對表達式溢出進行檢查。如果表達式不使用溢出檢查操時是否對表達式溢出進行檢查。如果表達式不使用溢出檢查操作符或使用了作符或使用了checked操作符,常量表達式溢出,在編譯時將操作符,常量表達式溢出,在編譯時將產(chǎn)生錯誤,表達式中包含變量,程序運行時執(zhí)行該表達式產(chǎn)生產(chǎn)生錯誤,表達式中包含變量,程序運行時執(zhí)行該表達式產(chǎn)生溢出,將產(chǎn)生異常提示信息。而使用了溢出,將產(chǎn)生異常提示信息。而使用了unchecked

53、操作符的表操作符的表達式語句,即使表達式產(chǎn)生溢出,編譯和運行時都不會產(chǎn)生錯達式語句,即使表達式產(chǎn)生溢出,編譯和運行時都不會產(chǎn)生錯誤提示。但這往往會出現(xiàn)一些不可預期的結果,所以使用誤提示。但這往往會出現(xiàn)一些不可預期的結果,所以使用unchecked操作符要小心。下面的例子說明了操作符要小心。下面的例子說明了checked和和unchecked操作符的用法:操作符的用法:42using System;class Test static void Main(string args) const int x=int.MaxValue; /x等于等于int類型所能表示的最大數(shù)類型所能表示的最大數(shù)unch

54、ecked /不檢查溢出不檢查溢出int z=x*2; /編譯時不產(chǎn)生編譯錯誤,編譯時不產(chǎn)生編譯錯誤,z=-2Console.WriteLine(z=0,z);/顯示顯示-2checked /檢查溢出檢查溢出int z1=(x*2); /編譯時會產(chǎn)生編譯錯誤編譯時會產(chǎn)生編譯錯誤Console.WriteLine(z=0,z1);431.5.4 運算符的優(yōu)先級與結合性運算符的優(yōu)先級與結合性 優(yōu)先級是指當一個表達式中出現(xiàn)不同的運算符時,先進行何種優(yōu)先級是指當一個表達式中出現(xiàn)不同的運算符時,先進行何種運算。結合性是指當一個表達式中出現(xiàn)兩個以上的同級運算符運算。結合性是指當一個表達式中出現(xiàn)兩個以上的同

55、級運算符時,是由左向右運算還是由右向左運算。時,是由左向右運算還是由右向左運算。C#中運算符的優(yōu)先級中運算符的優(yōu)先級有如下特點:一元運算符的優(yōu)先級高于二元和三元運算符。有如下特點:一元運算符的優(yōu)先級高于二元和三元運算符。不同類運算符的優(yōu)先級關系是:算術運算符不同類運算符的優(yōu)先級關系是:算術運算符關系運算符關系運算符邏輯邏輯運算符運算符條件運算符條件運算符賦值運算符。賦值運算符。同類運算符中優(yōu)先級也有高低之分。算術運算符中,乘、除、同類運算符中優(yōu)先級也有高低之分。算術運算符中,乘、除、求余高于加、減;關系運算符中,小于、小于等于、大于、大求余高于加、減;關系運算符中,小于、小于等于、大于、大于等

56、于高于相等和不相等;邏輯運算符的優(yōu)先級為非于等于高于相等和不相等;邏輯運算符的優(yōu)先級為非與與或?;颉?當一個操作數(shù)出現(xiàn)在兩個有相同優(yōu)先級的運算符之間時,運算當一個操作數(shù)出現(xiàn)在兩個有相同優(yōu)先級的運算符之間時,運算符按照出現(xiàn)的順序從左向右執(zhí)行(賦值運算符均為從右向左執(zhí)符按照出現(xiàn)的順序從左向右執(zhí)行(賦值運算符均為從右向左執(zhí)行)。行)。441.6 1.6 控制結構控制結構 學習了基本數(shù)據(jù)類型、運算符和表達式,就可以采用學習了基本數(shù)據(jù)類型、運算符和表達式,就可以采用控制結構來編寫程序。本節(jié)介紹控制結構來編寫程序。本節(jié)介紹C#語言中的控制結構,語言中的控制結構,包括順序結構、選擇結構、循環(huán)結構和跳轉語句。

57、包括順序結構、選擇結構、循環(huán)結構和跳轉語句。1.6.1 1.6.1 順序結構順序結構 順序結構是程序設計中最簡單、最常用的基本結構。順序結構是程序設計中最簡單、最常用的基本結構。在該結構中,各語句是按照其書寫次序一條接一條地在該結構中,各語句是按照其書寫次序一條接一條地順序執(zhí)行。順序執(zhí)行。1. 賦值語句賦值語句 C#中的賦值語句是由賦值表達式加語句結束符號中的賦值語句是由賦值表達式加語句結束符號“;”構成。由于構成。由于C#的賦值表達式形式豐富,所以的賦值表達式形式豐富,所以賦值語句也表現(xiàn)出多樣性。賦值語句也表現(xiàn)出多樣性。45 單賦值語句單賦值語句 由一個賦值操作符構成的賦值語句,其格式為:變

58、量由一個賦值操作符構成的賦值語句,其格式為:變量=表達式;表達式;其中其中“變量變量”是被賦值的對象,可以是基本變量或者是后邊章是被賦值的對象,可以是基本變量或者是后邊章節(jié)介紹的其他類型變量。節(jié)介紹的其他類型變量?!?”稱為稱為“賦值符號賦值符號”,功能是把,功能是把“表達式表達式”的值賦給左邊的的值賦給左邊的“變量變量”。賦值號兩端的數(shù)據(jù)類型。賦值號兩端的數(shù)據(jù)類型原則上應該一致,當兩者類型不一致,在將表達式轉換為變量原則上應該一致,當兩者類型不一致,在將表達式轉換為變量的類型時,如果任何情況下都不會導致信息丟失,例如表達式的類型時,如果任何情況下都不會導致信息丟失,例如表達式為為int類型,

59、變量為類型,變量為long類型,系統(tǒng)將自動進行數(shù)據(jù)類型的轉換類型,系統(tǒng)將自動進行數(shù)據(jù)類型的轉換(隱式轉換),如果將表達式轉換為變量的類型時,信息可能(隱式轉換),如果將表達式轉換為變量的類型時,信息可能丟失,例如表達式為丟失,例如表達式為long類型,變量為類型,變量為int類型,必須進行顯示類型,必須進行顯示轉換,請參考后邊有關章節(jié)。一些例子如下:轉換,請參考后邊有關章節(jié)。一些例子如下:Double pi=3.1415926; /聲明一個雙精度型的變量聲明一個雙精度型的變量pi,并初始化。,并初始化。int i=0; i+; /變量變量i完成自增完成自增1的操作,等效于的操作,等效于i=i+

60、1;string myName=”李小飛李小飛”; /將字符串常量賦值給字條串變量將字符串常量賦值給字條串變量int total; total=100; /將常量將常量100賦值給數(shù)值變量賦值給數(shù)值變量total/編譯錯誤,編譯錯誤,3.5默認為默認為Double類型類型single x=3.5; /不能將不能將double類型隱式轉換為類型隱式轉換為single類型類型46 復合賦值語句:復合賦值語句是使用復合賦值語句:復合賦值語句是使用+=、-=、*=、/=等運算符構成的賦值語句,例如:等運算符構成的賦值語句,例如:int x=5;x-=6; /相當于相當于x=x-6,x的最后值為的最后值為-1strin

溫馨提示

  • 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

提交評論