簡單程序設(shè)計(jì)_第1頁
簡單程序設(shè)計(jì)_第2頁
簡單程序設(shè)計(jì)_第3頁
簡單程序設(shè)計(jì)_第4頁
簡單程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1C#應(yīng)用程序設(shè)計(jì)教程應(yīng)用程序設(shè)計(jì)教程2本課程的前序課程:本課程的前序課程:大學(xué)本??朴?jì)算機(jī)導(dǎo)論大學(xué)本專科計(jì)算機(jī)導(dǎo)論 本課程主要講述內(nèi)容:本課程主要講述內(nèi)容:WindowsWindows客戶端客戶端應(yīng)用程序設(shè)計(jì)應(yīng)用程序設(shè)計(jì) 3本書詳細(xì)內(nèi)容本書詳細(xì)內(nèi)容第第1章章 簡單程序設(shè)計(jì)簡單程序設(shè)計(jì) 第第2章章 數(shù)據(jù)類型數(shù)據(jù)類型 第第3章章 C#面向?qū)ο缶幊袒A(chǔ)面向?qū)ο缶幊袒A(chǔ) 第第4章章 程序調(diào)試與異常處理程序調(diào)試與異常處理 第第5章章 C#可視化編程基礎(chǔ)可視化編程基礎(chǔ) 第第6章章 常用控件和類的使用常用控件和類的使用 第第7章章 文本編輯器的實(shí)現(xiàn)文本編輯器的實(shí)現(xiàn) 第第8章章 圖形圖像編程圖形圖像編程 第

2、第9章章 文件和流文件和流 第第10章多線程和章多線程和Socket編程初步編程初步 第第11章數(shù)據(jù)庫與章數(shù)據(jù)庫與ADO.NET4C#及及Visual Studio開發(fā)工具介紹開發(fā)工具介紹 C# 2000年年 C#誕生誕生 2001年年 C#被被ECMA(歐洲計(jì)算機(jī)制造者協(xié)會歐洲計(jì)算機(jī)制造者協(xié)會)規(guī)定為高級規(guī)定為高級 語言開發(fā)標(biāo)準(zhǔn)(語言開發(fā)標(biāo)準(zhǔn)(ECMA-334 ) 2003年年 C#被被ISO(國際標(biāo)準(zhǔn)化組織國際標(biāo)準(zhǔn)化組織)規(guī)定為高級語言開發(fā)規(guī)定為高級語言開發(fā) 標(biāo)準(zhǔn)(標(biāo)準(zhǔn)(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的各種版本(功能從最強(qiáng)到最弱)的各種版本(功能從最強(qiáng)到最弱) VS2005 Team 版本版本 用于大型團(tuán)隊(duì)開發(fā)用于大型團(tuán)隊(duì)開發(fā) VS2005 Professional版本版本 用于大中型軟件公司用于大中型軟件公司 VS2005 Standard版本版本 用于小型軟件公司用于小型軟件公司 VS2005 Express版本版本 用于業(yè)余開發(fā)者(初學(xué)者)用于業(yè)余開發(fā)者(初學(xué)者

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

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

6、的可移植指令集,可在CLR中運(yùn)行。擴(kuò)展名為中運(yùn)行。擴(kuò)展名為exe或或dll的可執(zhí)的可執(zhí)行文件運(yùn)行時,行文件運(yùn)行時,CLR同時運(yùn)行。同時運(yùn)行。MSIL語言代碼不是語言代碼不是CPU可執(zhí)可執(zhí)行的機(jī)器碼,行的機(jī)器碼,CLR中的中的JIT編譯器編譯器(Just In Time)負(fù)責(zé)將)負(fù)責(zé)將MSIL代碼翻譯成機(jī)器代碼在代碼翻譯成機(jī)器代碼在CPU中運(yùn)行,由中運(yùn)行,由CLR來管理來管理.NET應(yīng)用應(yīng)用程序的運(yùn)行,程序的運(yùn)行,CLR提供內(nèi)存管理、線程管理、遠(yuǎn)程管理等服務(wù),提供內(nèi)存管理、線程管理、遠(yuǎn)程管理等服務(wù),并對程序代碼的安全和可靠性把關(guān)。可編寫在任意指定操作系并對程序代碼的安全和可靠性把關(guān)。可編寫在任意

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

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

9、的窗體,用來建立強(qiáng)大的Web應(yīng)用程序。應(yīng)用程序。 Windows窗體類:窗體類:Windows窗體支持的一組類,用窗體支持的一組類,用于開發(fā)基于于開發(fā)基于Windows的圖形用戶界面應(yīng)用程序。的圖形用戶界面應(yīng)用程序。 總之,總之,.NET開發(fā)框架在公共語言運(yùn)行時的基礎(chǔ)上,開發(fā)框架在公共語言運(yùn)行時的基礎(chǔ)上,為開發(fā)者提供了完善的類庫,開發(fā)者可使用多種語為開發(fā)者提供了完善的類庫,開發(fā)者可使用多種語言及言及Visual Studio開發(fā)工具來快速構(gòu)建下一代的網(wǎng)開發(fā)工具來快速構(gòu)建下一代的網(wǎng)絡(luò)應(yīng)用。絡(luò)應(yīng)用。101.2 C#1.2 C#語言特點(diǎn)語言特點(diǎn)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),由通用語由通用語言運(yùn)行環(huán)境言運(yùn)行環(huán)境(CLR)(CLR)中的既時編譯器中的既時編譯器(JIT)(JIT)將中間語言代碼翻譯為將中間語言代碼翻譯為CPUCPU可執(zhí)行的機(jī)可執(zhí)行的機(jī)器碼,由器碼,由CPUCPU執(zhí)行執(zhí)行 11CLRCLR為為C#

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26、法來實(shí)現(xiàn)以上命名空間也可以采用非嵌套的語法來實(shí)現(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是告訴應(yīng)用程序到哪里找到類是告訴應(yīng)用程序到哪里找到類A。如。如果不使用果不使用using語句,應(yīng)使用如下形式:語句,應(yīng)使用如下形式:class WelcomeApp /表示類表示類A在命名空間在命名空間N1.N2中中 N1.N2.A.f1(); 命名空間聲明不是必須的,例如在上述程序中,可命名空間聲明不是必須的,例如在上述程序中,可以不聲明以不聲明“MyApplication”這一用戶自定義命名空這一用戶自定義命名空間,程序照樣可以正常運(yùn)行,系統(tǒng)將所定義

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

29、句中包含不同層次的內(nèi)容時,C#用點(diǎn)用點(diǎn)“.”操作符表示從屬關(guān)系。比如例操作符表示從屬關(guān)系。比如例1.1代碼第代碼第6行通常應(yīng)該寫成如下形式:行通常應(yīng)該寫成如下形式: System.Console.WriteLine(歡迎使用歡迎使用C#!); 其中,其中,“System”表示一個命名空間,表示一個命名空間,“Console”表示該命名空間中的一個類,表示該命名空間中的一個類,“WriteLine”表示該表示該類中的一個方法。不過,因?yàn)樵诘陬愔械囊粋€方法。不過,因?yàn)樵诘?行中使用了行中使用了using指令,已經(jīng)導(dǎo)入了指令,已經(jīng)導(dǎo)入了“System”命名空間,所以命名空間,所以使用該空間中的類時,

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

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

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

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

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

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

36、下表所示。存位數(shù)、其取值范圍見下表所示。31類型名稱位數(shù)取值范圍sbyte字節(jié)型8-128127byte無符號字節(jié)型80255short短整型16-3276832767ushort無符號短整型16065535int整型32-21474836482147483647uint無符號整型3204294967295long長整型64-9223372892233727ulong無符號長整型640184467445float單精度型32-3.40282347E+383.40282347E+38double雙精度型64-1.79763E+3081.79763E+308decimal十進(jìn)制小數(shù)型128-7.9

37、22816251426433759E+287.922816251426433759E+2832 整數(shù)整數(shù) 整數(shù)可以用十進(jìn)制表示,如整數(shù)可以用十進(jìn)制表示,如123、45678等;也可以等;也可以用十六進(jìn)制表示,如用十六進(jìn)制表示,如0 x12、0X3A等,即在數(shù)字前面等,即在數(shù)字前面加加“0 x”或或“0X”。C#的整數(shù)沒有八進(jìn)制表示形式。的整數(shù)沒有八進(jìn)制表示形式。 一般說來,整型常量值的默認(rèn)數(shù)據(jù)類型是一般說來,整型常量值的默認(rèn)數(shù)據(jù)類型是int型,但型,但當(dāng)其值超出了當(dāng)其值超出了int型的取值范圍時,它將根據(jù)其數(shù)值型的取值范圍時,它將根據(jù)其數(shù)值大小相應(yīng)被視為一個大小相應(yīng)被視為一個unit型、型、l

38、ong型或型或ulong型。也型。也可在整型常量后加后綴將它顯示說明為指定類型,可在整型常量后加后綴將它顯示說明為指定類型,例如后綴例如后綴U(或(或u)指定整數(shù)為)指定整數(shù)為uint或或ulong型(視其型(視其值大小而定)。如果在整型常量后同時加上這兩種值大小而定)。如果在整型常量后同時加上這兩種后綴后綴UL,它就是一個,它就是一個ulong型常量。型常量。 123456L /long類型類型 25u /uint類型類型 25ul /ulong類型類型33 浮點(diǎn)數(shù)浮點(diǎn)數(shù) 浮點(diǎn)型常量只能用十進(jìn)制表示,共有兩種表示形式:浮點(diǎn)型常量只能用十進(jìn)制表示,共有兩種表示形式:一般形式和指數(shù)表示形式。一般

39、形式又稱小數(shù)表示形一般形式和指數(shù)表示形式。一般形式又稱小數(shù)表示形式,浮點(diǎn)數(shù)由整數(shù)和小數(shù)兩部分組成,其中整數(shù)部分式,浮點(diǎn)數(shù)由整數(shù)和小數(shù)兩部分組成,其中整數(shù)部分為為0時在實(shí)際使用時可省略。例如:時在實(shí)際使用時可省略。例如:2.6,.9,8.0,小,小數(shù)部分不能省略,此與數(shù)部分不能省略,此與C+語言不同。如語言不同。如8.0不能寫成不能寫成8.。指數(shù)表示形式時,浮點(diǎn)數(shù)由尾數(shù)、字母。指數(shù)表示形式時,浮點(diǎn)數(shù)由尾數(shù)、字母E(或(或e)、)、指數(shù)部分組成。例如:指數(shù)部分組成。例如:2.3E12,.25E6,-0.35E-5。 浮點(diǎn)型常量默認(rèn)類型為浮點(diǎn)型常量默認(rèn)類型為double型,如果要將其說明為型,如果要

40、將其說明為float型,需在其值后加后綴型,需在其值后加后綴F(或(或f)。如果要將其說)。如果要將其說明為明為decimal型,需在其值后加型,需在其值后加M(或(或m)。也可在數(shù))。也可在數(shù)值后加上后綴值后加上后綴D(或(或d)將其顯示說明為)將其顯示說明為double型。例型。例如:如:2.8f,6.9D,4.6E7M。342. 字符類型(字符類型(char) 字符型數(shù)據(jù)在內(nèi)存中占字符型數(shù)據(jù)在內(nèi)存中占2字節(jié),包括數(shù)字字符、英文字節(jié),包括數(shù)字字符、英文字母、表達(dá)符號、中文等,數(shù)據(jù)范圍是字母、表達(dá)符號、中文等,數(shù)據(jù)范圍是065535之間之間的的Unicode字符集中的單個字符。采用字符集中的

41、單個字符。采用Unicode字符集字符集可以表示世界上大多數(shù)語言。字符型數(shù)據(jù)通常情況下可以表示世界上大多數(shù)語言。字符型數(shù)據(jù)通常情況下就是用單引號括起來的一個字符。例如:就是用單引號括起來的一個字符。例如: A,1,*,# 此外,此外,C#語言還提供了一些轉(zhuǎn)義字符,以反斜杠語言還提供了一些轉(zhuǎn)義字符,以反斜杠“”開頭,后跟一個字符或開頭,后跟一個字符或Unicode碼。書中表碼。書中表1-2列出了列出了C#語言中常用的轉(zhuǎn)義字符。語言中常用的轉(zhuǎn)義字符。3. 布爾型布爾型 布爾型數(shù)據(jù)表示布爾邏輯量,只有兩個值布爾型數(shù)據(jù)表示布爾邏輯量,只有兩個值“true”(真)和(真)和“false”(假)。布爾型數(shù)

42、據(jù)為程序進(jìn)行復(fù)(假)。布爾型數(shù)據(jù)為程序進(jìn)行復(fù)雜的判斷提供了數(shù)據(jù)類型依據(jù)。和雜的判斷提供了數(shù)據(jù)類型依據(jù)。和C語言不同,不能語言不同,不能認(rèn)為認(rèn)為0是是false,其他值是,其他值是true。351.5.2 常量和變量常量和變量1. 變量變量 變量是指在程序運(yùn)行過程中值可以發(fā)生變化的量。變量是指在程序運(yùn)行過程中值可以發(fā)生變化的量。C#中要求中要求變量在使用前必須先聲明后使用。變量名必須為合法標(biāo)識符,變量在使用前必須先聲明后使用。變量名必須為合法標(biāo)識符,有關(guān)變量的命名規(guī)則參見有關(guān)變量的命名規(guī)則參見1.4.1小節(jié)中的標(biāo)識符命名規(guī)則。變量小節(jié)中的標(biāo)識符命名規(guī)則。變量定義的一般形式為:類型定義的一般形式為

43、:類型 變量名表;變量名表; 其中變量名表可以是其中變量名表可以是單個變量,也可以是多個變量的列表。下面是一些合法的變量單個變量,也可以是多個變量的列表。下面是一些合法的變量定義形式。定義形式。char ch; /聲明了一個字符型變量聲明了一個字符型變量chint num,sum; /聲明了兩個整型變量,聲明了兩個整型變量,num和和sumdouble total,salary; /聲明了兩個雙精度變量聲明了兩個雙精度變量total和和salary此外,也可以在定義變量時對其進(jìn)行初始化,例如:此外,也可以在定義變量時對其進(jìn)行初始化,例如:char ch = a; /定義了一個字符型變量定義了一

44、個字符型變量ch,并為其賦初值,并為其賦初值“a”int x = 50,y; /定義了兩個整型變量定義了兩個整型變量x和和y,并為,并為x賦初值為賦初值為50/常量常量1.25后加了后加了f是將值是將值1.25強(qiáng)制轉(zhuǎn)換為強(qiáng)制轉(zhuǎn)換為float型型(默認(rèn)情況下默認(rèn)情況下/1.25為為double型型) float ff=1.25f; /定義了一個單精度變量定義了一個單精度變量ff,并為其賦初值為,并為其賦初值為1.25362. 常量:常量: 常量是在程序運(yùn)行中值保持不變的量。常量有直接常量和常量是在程序運(yùn)行中值保持不變的量。常量有直接常量和符號常量兩種。符號常量兩種。 直接常量:直接常量: 在在1

45、.5.1節(jié)中介紹的各種類型的常數(shù),其取值直接反節(jié)中介紹的各種類型的常數(shù),其取值直接反映了其類型,故稱作直接常量。映了其類型,故稱作直接常量。 符號常量:符號常量使用符號常量:符號常量使用const或或readonly關(guān)鍵字來定義關(guān)鍵字來定義,格式如格式如下:下:const 類型類型 符號常量名符號常量名=常量表達(dá)式;常量表達(dá)式; “常量表達(dá)式常量表達(dá)式”的意義在于該表達(dá)式不能包含變量及函數(shù)等值會的意義在于該表達(dá)式不能包含變量及函數(shù)等值會發(fā)生變化的內(nèi)容。常量表達(dá)式中可以包含其他已定義常量。例如:發(fā)生變化的內(nèi)容。常量表達(dá)式中可以包含其他已定義常量。例如:const int min=-32767;/

46、合法合法const double PI=3.14;/合法合法const double TT=PI*min;/合法,表達(dá)式包含兩個已定義常量合法,表達(dá)式包含兩個已定義常量int RR=10; const double SS=PI*RR*RR;/不合法,表達(dá)式中包含變量不合法,表達(dá)式中包含變量371.5.3 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式 運(yùn)算符是表示實(shí)現(xiàn)某種運(yùn)算的符號。表達(dá)式是由變運(yùn)算符是表示實(shí)現(xiàn)某種運(yùn)算的符號。表達(dá)式是由變量、常量、運(yùn)算符和圓括號等按一定的規(guī)則組成的量、常量、運(yùn)算符和圓括號等按一定的規(guī)則組成的式子。表達(dá)式經(jīng)過運(yùn)算后產(chǎn)生一個結(jié)果,其類型由式子。表達(dá)式經(jīng)過運(yùn)算后產(chǎn)生一個結(jié)果,其類型由

47、數(shù)據(jù)和運(yùn)算符共同決定。數(shù)據(jù)和運(yùn)算符共同決定。 1. 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 下表按列出了下表按列出了C#中的算術(shù)運(yùn)算符,其中中的算術(shù)運(yùn)算符,其中“-”運(yùn)算運(yùn)算符在單目運(yùn)算(單個操作數(shù))中作取負(fù)號運(yùn)算,在符在單目運(yùn)算(單個操作數(shù))中作取負(fù)號運(yùn)算,在雙目運(yùn)算(兩個操作數(shù))中作減法運(yùn)算。以下介紹雙目運(yùn)算(兩個操作數(shù))中作減法運(yùn)算。以下介紹的操作符的操作數(shù)可為整數(shù)類型和實(shí)數(shù)類型,結(jié)果的操作符的操作數(shù)可為整數(shù)類型和實(shí)數(shù)類型,結(jié)果仍為數(shù)值型數(shù)據(jù)。(表仍為數(shù)值型數(shù)據(jù)。(表1-3中,設(shè)變量中,設(shè)變量a、b、c為整為整型,值為型,值為5)38運(yùn)算符含義優(yōu)先級 實(shí)例結(jié)果-負(fù)號1b=-ab值為

48、-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. 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算符用于對兩個操作數(shù)進(jìn)行比較,判斷關(guān)系是否成立,關(guān)系運(yùn)算符用于對兩個操作數(shù)進(jìn)行比較,判斷關(guān)系是否成立,結(jié)果為邏輯值。若成立則結(jié)果為結(jié)果為邏輯值。若成立則結(jié)果為true,否則為,否則為false。關(guān)系運(yùn)算。關(guān)系運(yùn)算符有六種:符有六種:、=、 b) & (x

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

50、為表達(dá)式,則運(yùn)算結(jié)果為表達(dá)式1的值,的值,如果為如果為false,運(yùn)算結(jié)果為表達(dá)式,運(yùn)算結(jié)果為表達(dá)式2的值。例如:的值。例如:int a=25,b=10,c;c=ab?a:b; /c的值為的值為25,使得,使得c取取a和和b中較大的值。中較大的值。415. 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算符包括單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符。賦值運(yùn)算符包括單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符?!?”是簡是簡單賦值運(yùn)算符,其作用是將單賦值運(yùn)算符,其作用是將“=”右邊表達(dá)式的值賦給其左邊右邊表達(dá)式的值賦給其左邊的操作數(shù)(稱左操作數(shù),通常為一個變量)。復(fù)合運(yùn)算符是由的操作數(shù)(稱左操作數(shù),通常為一個變量)

51、。復(fù)合運(yùn)算符是由“=”與其他運(yùn)算符結(jié)合在一起組成的,如與其他運(yùn)算符結(jié)合在一起組成的,如“+=”、“-=”、“*=”、“/=”等。例如:等。例如:“x+=y”相當(dāng)于相當(dāng)于“x=x+y”。6. 溢出檢查操作符溢出檢查操作符checked和和unchecked 在進(jìn)行整型算術(shù)運(yùn)算在進(jìn)行整型算術(shù)運(yùn)算(如如+、-、*、/等等)或從一種整型顯式轉(zhuǎn)換或從一種整型顯式轉(zhuǎn)換到另一種整型時,有可能出現(xiàn)運(yùn)算結(jié)果超出這個結(jié)果所屬類型到另一種整型時,有可能出現(xiàn)運(yùn)算結(jié)果超出這個結(jié)果所屬類型值域的情況,這種情況稱之為溢出。整型算術(shù)運(yùn)算表達(dá)式可以值域的情況,這種情況稱之為溢出。整型算術(shù)運(yùn)算表達(dá)式可以使用使用checked或或

52、unchecked溢出檢查操作符,決定在編譯和運(yùn)行溢出檢查操作符,決定在編譯和運(yùn)行時是否對表達(dá)式溢出進(jìn)行檢查。如果表達(dá)式不使用溢出檢查操時是否對表達(dá)式溢出進(jìn)行檢查。如果表達(dá)式不使用溢出檢查操作符或使用了作符或使用了checked操作符,常量表達(dá)式溢出,在編譯時將操作符,常量表達(dá)式溢出,在編譯時將產(chǎn)生錯誤,表達(dá)式中包含變量,程序運(yùn)行時執(zhí)行該表達(dá)式產(chǎn)生產(chǎn)生錯誤,表達(dá)式中包含變量,程序運(yùn)行時執(zhí)行該表達(dá)式產(chǎn)生溢出,將產(chǎn)生異常提示信息。而使用了溢出,將產(chǎn)生異常提示信息。而使用了unchecked操作符的表操作符的表達(dá)式語句,即使表達(dá)式產(chǎn)生溢出,編譯和運(yùn)行時都不會產(chǎn)生錯達(dá)式語句,即使表達(dá)式產(chǎn)生溢出,編譯和

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

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

55、優(yōu)先級有如下特點(diǎn):一元運(yùn)算符的優(yōu)先級高于二元和三元運(yùn)算符。有如下特點(diǎn):一元運(yùn)算符的優(yōu)先級高于二元和三元運(yùn)算符。不同類運(yùn)算符的優(yōu)先級關(guān)系是:算術(shù)運(yùn)算符不同類運(yùn)算符的優(yōu)先級關(guān)系是:算術(shù)運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符邏輯邏輯運(yùn)算符運(yùn)算符條件運(yùn)算符條件運(yùn)算符賦值運(yùn)算符。賦值運(yùn)算符。同類運(yùn)算符中優(yōu)先級也有高低之分。算術(shù)運(yùn)算符中,乘、除、同類運(yùn)算符中優(yōu)先級也有高低之分。算術(shù)運(yùn)算符中,乘、除、求余高于加、減;關(guān)系運(yùn)算符中,小于、小于等于、大于、大求余高于加、減;關(guān)系運(yùn)算符中,小于、小于等于、大于、大于等于高于相等和不相等;邏輯運(yùn)算符的優(yōu)先級為非于等于高于相等和不相等;邏輯運(yùn)算符的優(yōu)先級為非與與或。或。 當(dāng)一個操

56、作數(shù)出現(xiàn)在兩個有相同優(yōu)先級的運(yùn)算符之間時,運(yùn)算當(dāng)一個操作數(shù)出現(xiàn)在兩個有相同優(yōu)先級的運(yùn)算符之間時,運(yùn)算符按照出現(xiàn)的順序從左向右執(zhí)行(賦值運(yùn)算符均為從右向左執(zhí)符按照出現(xiàn)的順序從左向右執(zhí)行(賦值運(yùn)算符均為從右向左執(zhí)行)。行)。441.6 1.6 控制結(jié)構(gòu)控制結(jié)構(gòu) 學(xué)習(xí)了基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,就可以采用學(xué)習(xí)了基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,就可以采用控制結(jié)構(gòu)來編寫程序。本節(jié)介紹控制結(jié)構(gòu)來編寫程序。本節(jié)介紹C#語言中的控制結(jié)構(gòu),語言中的控制結(jié)構(gòu),包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和跳轉(zhuǎn)語句。包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和跳轉(zhuǎn)語句。1.6.1 1.6.1 順序結(jié)構(gòu)順序結(jié)構(gòu) 順序結(jié)構(gòu)是程序設(shè)計(jì)中最簡

57、單、最常用的基本結(jié)構(gòu)。順序結(jié)構(gòu)是程序設(shè)計(jì)中最簡單、最常用的基本結(jié)構(gòu)。在該結(jié)構(gòu)中,各語句是按照其書寫次序一條接一條地在該結(jié)構(gòu)中,各語句是按照其書寫次序一條接一條地順序執(zhí)行。順序執(zhí)行。1. 賦值語句賦值語句 C#中的賦值語句是由賦值表達(dá)式加語句結(jié)束符號中的賦值語句是由賦值表達(dá)式加語句結(jié)束符號“;”構(gòu)成。由于構(gòu)成。由于C#的賦值表達(dá)式形式豐富,所以的賦值表達(dá)式形式豐富,所以賦值語句也表現(xiàn)出多樣性。賦值語句也表現(xiàn)出多樣性。45 單賦值語句單賦值語句 由一個賦值操作符構(gòu)成的賦值語句,其格式為:變量由一個賦值操作符構(gòu)成的賦值語句,其格式為:變量=表達(dá)式;表達(dá)式;其中其中“變量變量”是被賦值的對象,可以是基

58、本變量或者是后邊章是被賦值的對象,可以是基本變量或者是后邊章節(jié)介紹的其他類型變量。節(jié)介紹的其他類型變量?!?”稱為稱為“賦值符號賦值符號”,功能是把,功能是把“表達(dá)式表達(dá)式”的值賦給左邊的的值賦給左邊的“變量變量”。賦值號兩端的數(shù)據(jù)類型。賦值號兩端的數(shù)據(jù)類型原則上應(yīng)該一致,當(dāng)兩者類型不一致,在將表達(dá)式轉(zhuǎn)換為變量原則上應(yīng)該一致,當(dāng)兩者類型不一致,在將表達(dá)式轉(zhuǎn)換為變量的類型時,如果任何情況下都不會導(dǎo)致信息丟失,例如表達(dá)式的類型時,如果任何情況下都不會導(dǎo)致信息丟失,例如表達(dá)式為為int類型,變量為類型,變量為long類型,系統(tǒng)將自動進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換類型,系統(tǒng)將自動進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換(隱式轉(zhuǎn)換),如

59、果將表達(dá)式轉(zhuǎn)換為變量的類型時,信息可能(隱式轉(zhuǎn)換),如果將表達(dá)式轉(zhuǎn)換為變量的類型時,信息可能丟失,例如表達(dá)式為丟失,例如表達(dá)式為long類型,變量為類型,變量為int類型,必須進(jìn)行顯示類型,必須進(jìn)行顯示轉(zhuǎn)換,請參考后邊有關(guān)章節(jié)。一些例子如下:轉(zhuǎn)換,請參考后邊有關(guān)章節(jié)。一些例子如下:Double pi=3.1415926; /聲明一個雙精度型的變量聲明一個雙精度型的變量pi,并初始化。,并初始化。int i=0; i+; /變量變量i完成自增完成自增1的操作,等效于的操作,等效于i=i+1;string myName=”李小飛李小飛”; /將字符串常量賦值給字條串變量將字符串常量賦值給字條串變量

60、int total; total=100; /將常量將常量100賦值給數(shù)值變量賦值給數(shù)值變量total/編譯錯誤,編譯錯誤,3.5默認(rèn)為默認(rèn)為Double類型類型single x=3.5; /不能將不能將double類型隱式轉(zhuǎn)換為類型隱式轉(zhuǎn)換為single類型類型46 復(fù)合賦值語句:復(fù)合賦值語句是使用復(fù)合賦值語句:復(fù)合賦值語句是使用+=、-=、*=、/=等運(yùn)算符構(gòu)成的賦值語句,例如:等運(yùn)算符構(gòu)成的賦值語句,例如:int x=5;x-=6; /相當(dāng)于相當(dāng)于x=x-6,x的最后值為的最后值為-1string s=”abcd”;s+=”efjh”; /相當(dāng)于相當(dāng)于s=s+”efjh”,s的最后值的最后值為為”abc

溫馨提示

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

最新文檔

評論

0/150

提交評論