C#入門經(jīng)典(第4版)_第1頁(yè)
C#入門經(jīng)典(第4版)_第2頁(yè)
C#入門經(jīng)典(第4版)_第3頁(yè)
C#入門經(jīng)典(第4版)_第4頁(yè)
已閱讀5頁(yè),還剩217頁(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)介

冃リ§C#是Microsoft在2000年7月推出.NETFramework的第1版時(shí)提供的ー種全新語(yǔ)言。C#的快速流行,使之成為使用.NETFramework的Windows和Web開發(fā)人員無(wú)可爭(zhēng)議的語(yǔ)言選擇。他們喜歡C#的ー個(gè)原因是其派生于C/C++的簡(jiǎn)潔語(yǔ)法,這種語(yǔ)法簡(jiǎn)化了以前困擾一些程序員的問(wèn)題。盡管做了這些簡(jiǎn)化,但C#仍廟了C++原來(lái)的功能,所以現(xiàn)在沒有理由不從C++轉(zhuǎn)向C#oC#語(yǔ)言并不難,也非常適合于學(xué)習(xí)基本編程技術(shù)。易于學(xué)習(xí),再加上.NETFramework的功能,使C#成為開始您編程生涯的絕佳方式。C#的最新版本3.0是.NETFramework3.5的一部分,它建立在已有的成功基礎(chǔ)之上,還添加了一些更吸引人的功能。其中一些功能取自于C++(至少?gòu)谋砻嫔峡词沁@樣),而另外一些功能是全新的。VisualStudio的最新版本和開發(fā)工具的Express系列也有許多變化和改進(jìn),這大大簡(jiǎn)化了編程,顯著提高了效率。本書將全面介紹C#編程的所有知識(shí),從該語(yǔ)言本身一直到Windows和Web編程,再到數(shù)據(jù)源的使用,最后是ー些高級(jí)技術(shù),例如,圖形編程。我們還將學(xué)習(xí)VisualC#Express2008ヽVisualWebDeveloperExpress2008和VisualStudio2008的功能和利用它進(jìn)行應(yīng)用程序開發(fā)的各種方式。本書界面友好,闡述淸晰,每一章都以前面章節(jié)的內(nèi)容為基礎(chǔ),便于讀者掌握髙級(jí)技術(shù)。每個(gè)概念都會(huì)根據(jù)需要來(lái)介紹和討論,而不會(huì)突然冒出某個(gè)技術(shù)術(shù)語(yǔ)來(lái)妨礙讀者的閱讀和理解。本書盡量不使用技術(shù)術(shù)語(yǔ),但如果需要,將根據(jù)上下文進(jìn)行正確的定義和布置。本書的作者都是各自領(lǐng)域的專家,都是C#語(yǔ)言和.NETFramework的愛好者,沒有人比他們更有資格講授C#了,他們將在您掌握從基本規(guī)則到高級(jí)技術(shù)的過(guò)程中為您保駕護(hù)航。除了基礎(chǔ)知識(shí)之外,本書還有許多有益的提示、練習(xí)、完全成熟的示例代碼(可以從上下載),在您的職業(yè)生涯中一定會(huì)用到它們。本書將毫無(wú)保留地傳授這些知識(shí),希望讀者能通過(guò)本書成為最優(yōu)秀的程序員。0.1本書讀者對(duì)象本書主要針對(duì)想學(xué)習(xí)如何使用.NETFramework編寫C#程序的所有人。本書前面的章節(jié)介紹該語(yǔ)言本身,讀者不需要具備任何編程經(jīng)驗(yàn)。以前對(duì)其他語(yǔ)言有一定了解的開發(fā)人員,會(huì)覺得這些章節(jié)的內(nèi)容非常熟悉。C#語(yǔ)法的許多方面都與其他語(yǔ)言相同,許多結(jié)構(gòu)對(duì)所有的編程語(yǔ)言來(lái)說(shuō)都是一樣的(例如,循環(huán)和分支結(jié)構(gòu))。但是,即使是有經(jīng)驗(yàn)的程序員也可以從這些章節(jié)中獲益,理解這些技術(shù)應(yīng)用于C#的特征。如果讀者是編程新手,就應(yīng)從頭開始學(xué)習(xí)。如果讀者對(duì).NETFramework比較陌生,但知道如何編程,就應(yīng)閱讀第1章,然后快速跳讀后面的幾章,這樣就能掌握C#語(yǔ)言的應(yīng)用方式了。如果讀者知道如何編程,但以前沒有接觸過(guò)面向?qū)ο蟮木幊陶Z(yǔ)言,就應(yīng)從第8章開始閱讀以后的章節(jié)。如果讀者對(duì)C#語(yǔ)言比較了解,就可以集中精力學(xué)習(xí)詳細(xì)論述最新.NETFramework和C#語(yǔ)言開發(fā)的章節(jié),尤其是集合、泛型和C#3.0語(yǔ)言的新增內(nèi)容(第11?14章),或者完全跳過(guò)本書的第I部分,從第15章開始學(xué)習(xí)。本書章節(jié)的編寫目的有兩個(gè):這些章節(jié)可以按順序閱讀,是C#語(yǔ)言的一個(gè)完整教程。還可以按照需要深入學(xué)習(xí)這些章節(jié),將其作為一本參考資料。除了核心內(nèi)容之外,每一章還包含一組練習(xí),完成這些練習(xí)有助于讀者理解所學(xué)習(xí)的內(nèi)容。練習(xí)包括簡(jiǎn)單的選擇題、判斷題以及需要修改或建に應(yīng)用程序的較難問(wèn)題。練習(xí)的答案在的本書Web頁(yè)面上在線提供。0.2本書結(jié)構(gòu)本書分為6個(gè)部分。引言:概述本書的內(nèi)容和作者。C#語(yǔ)言:介紹了C#語(yǔ)言的所有內(nèi)容,從基礎(chǔ)知識(shí)到面向?qū)ο蟮募夹g(shù),應(yīng)有盡有。Windows編程:介紹如何用C#編寫Windows應(yīng)用程序,如何部署它們。?Web編程:描述Web應(yīng)用程序的開發(fā)、Web服務(wù)和Web應(yīng)用程序的部署。?數(shù)據(jù)訪問(wèn):介紹在應(yīng)用程序中如何使用數(shù)據(jù),包括存儲(chǔ)在硬盤文件上的數(shù)據(jù)、以XML格式存儲(chǔ)的數(shù)據(jù)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)。?其他技術(shù):講述使用C#和.NETFramework的ー些額外方式,包括屬性、XML文檔說(shuō)明、網(wǎng)絡(luò)和GDI+圖形編程。還探討了由.NET3.0引入且由.NET3.5改進(jìn)的WPF、WCF和WF技術(shù)。下面介紹本書5個(gè)重要部分中的章節(jié)。0.2.1C#語(yǔ)言(第1?14章)第1章介紹C#以及它與.NET的關(guān)系,了解在這個(gè)環(huán)境下編程的基礎(chǔ)知識(shí),以及VisualC#Express(VCE)和VS與它的關(guān)系。第2章開始介紹C#應(yīng)用程序開發(fā),學(xué)習(xí)C#的語(yǔ)法,并把C#和樣例命令行、Windows應(yīng)用程序結(jié)合起來(lái)使用。這些示例將說(shuō)明C#如何快速輕松地啟動(dòng)和運(yùn)行,并附帶介紹VCE和VS開發(fā)環(huán)境以及本書將使用的基本窗口和工具。接著,第3章學(xué)習(xí)C#語(yǔ)言的更多基礎(chǔ)知識(shí),理解變量的含義以及如何操縱它們。第4章將用流程控制(循環(huán)和分支)改進(jìn)應(yīng)用程序的結(jié)構(gòu),第5章介紹一些高級(jí)的變量類型,如數(shù)組。第6章開始以函數(shù)的形式封裝代碼,這樣就更易于執(zhí)行重復(fù)的操作,代碼更容易理解。從第7章開始將運(yùn)用C#語(yǔ)言的基礎(chǔ)知識(shí),調(diào)試應(yīng)用程序,這包括在運(yùn)行應(yīng)用程序時(shí)輸出跟蹤信息,使用VS查找錯(cuò)誤,在強(qiáng)大的調(diào)試環(huán)境中找出解決問(wèn)題的辦法。第8章將學(xué)習(xí)面向?qū)ο缶幊蹋∣bject-OrientedProgramming,OOP)〇苜先了解這個(gè)術(shù)語(yǔ)的含義,回答“什么是對(duì)象?”。這個(gè)OOP初看起來(lái)是比較難的問(wèn)題。我們將用整整一章的篇幅來(lái)介紹它,解釋對(duì)象的強(qiáng)大之處。直到木章的最后オ會(huì)使用C#代碼。第9章將理論應(yīng)用于實(shí)踐,開始在C#應(yīng)用程序中使用OOP時(shí),一切都會(huì)發(fā)生變化,而這正是C#的強(qiáng)大之處。第10章首先介紹如何定義類和接口,然后探討類成員(包括字段、屬性和方法),在這一章的最后將開始創(chuàng)建一個(gè)撲克牌游戲應(yīng)用程序,這個(gè)應(yīng)用程序?qū)⒃趲渍轮虚_發(fā)完成,它非常有助于理解OOP。學(xué)習(xí)了OOP在C#中的工作原理后,第11章將介紹幾種常見的OOP場(chǎng)景,包括處理對(duì)象集合、比較和轉(zhuǎn)換對(duì)象。第!2章討論.NET2.0中C#的ー個(gè)非常有用的新特性——泛型,利用它可以創(chuàng)建非常靈活的類。第13章通過(guò)ー些其他技術(shù)和事件(它在Windows編程中非常重要)完成C#語(yǔ)言和OOP的討論。最后,第14章介紹C#3.0中引入的新特性。0.2.2Windows編程(第15-18章)第15章開始介紹Windows編程的概念,理解在VCE和VS中如何實(shí)現(xiàn)Windows編程。這一章也是從基礎(chǔ)知識(shí)開始介紹,并構(gòu)建知識(shí)體系。第16章學(xué)習(xí)如何在應(yīng)用程序中使用.NETFramework提供的各種控件。我們將簡(jiǎn)要論述.NET如何以圖形化的方式建立Windows應(yīng)用程序,以最少的時(shí)間和精力創(chuàng)建高級(jí)應(yīng)用程序。第17章介紹ー些常用的功能。利用這些功能可以方便地添加專業(yè)功能,例如,文件管理、打印等。第!8章討論應(yīng)用程序的部署,包括建立安裝程序,以便用戶快速安裝和運(yùn)行應(yīng)用程序。0.2.3Web編程(第19?23章)這個(gè)部分的結(jié)構(gòu)與Windows編程部分類似。首先,第!9章描述了構(gòu)成最簡(jiǎn)單的Web應(yīng)用程序的控件,如何把它們組合在一起,讓它們使用ASP.NET執(zhí)行任務(wù)。第20章以此為基礎(chǔ),介紹了更高級(jí)的技術(shù)、各種控件、Web環(huán)境下的狀態(tài)管理,以及Web標(biāo)準(zhǔn)的遵循。第2I章將涉足Web服務(wù)的精彩世界,它可以編程訪問(wèn)Internet上的信息和功能,可以把復(fù)雜的數(shù)據(jù)和功能以獨(dú)立于平臺(tái)的方式嵌入Web和Windows應(yīng)用程序。這ー章討論如何使用和創(chuàng)建Web服務(wù),以及.NET提供的其他工具,如安全性。第22章便3Ajax編程,這種方式可以給Web應(yīng)用程序添加動(dòng)態(tài)的客戶端功能。.NETFramework3.5通過(guò)ASP.NETAjax提供了Ajax功能,本章會(huì)解釋如何使用它。最后,第23章探討Web應(yīng)用程序和服務(wù)的部署,尤其是可以通過(guò)單擊按鈕把應(yīng)用程序發(fā)布到Web上的VS和VWD新特性。0.2.4數(shù)據(jù)訪問(wèn)(第24?29章)第24章介紹了應(yīng)用程序如何保存和檢索磁盤上的數(shù)據(jù),作為簡(jiǎn)單的文本文件或者更復(fù)雜的數(shù)據(jù)表示方式。這一章還將討論如何壓縮數(shù)據(jù),如何操縱舊數(shù)據(jù)(例如,用逗號(hào)隔開的值(CSV)文件),如何監(jiān)視和處理文件系統(tǒng)的變化。第25章學(xué)習(xí)數(shù)據(jù)交換的事實(shí)標(biāo)準(zhǔn)XML。前面的章節(jié)接觸過(guò)XML幾次,而這一章將了解XML的基本規(guī)則,論述XML的所有功能。本部分的其余章節(jié)介紹LINQ,這是內(nèi)置于.NETFramework最新版本中的查詢語(yǔ)言。第26章簡(jiǎn)要介紹L1NQ,第27章使用LINQ訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。第28章介紹如何聯(lián)合使用LINQ和舊的ADO.NET數(shù)據(jù)訪問(wèn)技術(shù)。最后,第29章學(xué)習(xí)如何使用LINQ處理XML數(shù)據(jù)。0.2.5其他技術(shù)悌3〇?36章)本書的最后一部分將介紹C#和.NET主題的其他技術(shù)。第30章將探討屬性,可以在程序集中包含類型的其他信息,添加用其他方式很難實(shí)現(xiàn)的功能。第31章研究XML文檔說(shuō)明,并介紹如何在源代碼中給應(yīng)用程序添加注釋。我們將學(xué)習(xí)如何添加這些信息,如何使用和提取它們,從而從代碼中生成MSDN樣式的文檔說(shuō)明。第32章介紹網(wǎng)絡(luò),應(yīng)用程序如何相互通信,如何與各種網(wǎng)絡(luò)I?.的其他服務(wù)通信。第33章從本書前面學(xué)習(xí)的各種技術(shù)中解脫出來(lái),研究用GDI+進(jìn)行圖形編程的主題,理解如何操縱圖形,設(shè)定應(yīng)用程序的樣式,這一章打開了一條通往各種C#應(yīng)用程序的大門。最后要討論.NETFramework最新版本中的幾個(gè)新技術(shù)。第34章介紹WindowsPresentationFoundation(WPF)?了解它給Windows和Web開發(fā)帶來(lái)了哪些變化。第35章介紹WindowsCommunicationFoundationWCF),它把Web服務(wù)的槪念擴(kuò)展和改進(jìn)為?種企業(yè)級(jí)的通信技術(shù)。本書的最后一章是第36章:,介紹了WindowsWorkflowFoundation(WF),它允許在應(yīng)用程序中執(zhí)行エ作流功能,因此可以定義一些操作,這些操作由外部的交互操作控制,以特定的順序執(zhí)行,這對(duì)許多類型的應(yīng)用程序都很有幫助。0.3使用本書的要求本書中C#和.NETFramework的代碼和描述都適用于.NET3.5。除了Framework之外,不需要其他東西就可以理解本書的這個(gè)方面,但許多示例都需要VisualC#Express2008作為主要開發(fā)工具,ー些章節(jié)則使用了VisualWebDeveloperExpress20080另タト,ー些功能只能在VisualStudio2008中使用,這會(huì)在相應(yīng)的地方明確指出。0,4源代碼在讀者學(xué)習(xí)本書中的示例時(shí),可以手工輸入所有的代碼,也可以使用本書附帶的源代碼文件。本書使用的所有源代碼都可以從本書合作站點(diǎn)/或/downpage上下載。登錄到站點(diǎn)/,使用Search工具或使用書名列表就可以找到本書。接著單擊本書細(xì)目頁(yè)面上的DownloadCode鏈接,就可以獲得所有的源代碼。注釋:由于許多圖書的標(biāo)題都很類似,所以按ISBN搜索是最簡(jiǎn)單的,本書英文版的ISBN是978?〇470-191354在下載了代碼后,只需用自己喜歡的解壓縮軟件對(duì)它進(jìn)行解壓縮即可。另外,也可以 進(jìn) 入/dynamic/books/download.aspx上的Wrox代碼下載主頁(yè),查看本書和其他Wrox圖書的所有代碼。0.5勘誤表盡管我們已經(jīng)盡了各種努力來(lái)保證文章或代碼中不出現(xiàn)錯(cuò)誤,但是錯(cuò)誤總是難免的,如果您在本書中找到了錯(cuò)誤,例如拼寫錯(cuò)誤或代碼錯(cuò)誤,請(qǐng)告訴我們,我們將非常感激。通過(guò)勘誤表,可以讓其他讀者避免受挫,當(dāng)然,這還有助于提供更髙質(zhì)量的信息。請(qǐng)給wkservice@發(fā)電子郵件,我們就會(huì)檢查您的反饋信息,如果是正確的,我們將在本E的后續(xù)版本中采用。要在網(wǎng)站上找到本書英文版的勘誤表,可以登錄,通過(guò)Search工具或書名列表查找本書,然后在本書的細(xì)目頁(yè)面上,單擊BookErrata鏈接。在這個(gè)頁(yè)面上.可以査看到Wrox編輯已提交和粘貼的所有勘誤項(xiàng)。完整的圖書列表還包括每本書的勘誤表,網(wǎng)址是/miscs/booklist.shtmL0.6P2P.WROX.COM要與作者和同行討論,請(qǐng)加入卜.的P2P論壇。這個(gè)論壇是ー個(gè)基于Web的系統(tǒng),便于您張貼與Wrox圖書相關(guān)的消息和相關(guān)技術(shù),與其他讀者和技術(shù)用戶交流心得。該論壇提供了訂閱功能,當(dāng)論壇上有新的消息時(shí),它可以給您傳送感興趣的論題。Wrox作者、編輯和其他業(yè)界專家和讀者都會(huì)到這個(gè)論壇上來(lái)探討問(wèn)題。在t,有許多不同的論壇,它們不僅有助于閱讀本書,還有助于開發(fā)自己的應(yīng)用程序。要加入論壇,可以遵循下面的步驟:(1)進(jìn)入?單擊Register鏈接。(2)閱讀使用協(xié)議,并單擊Agree按扭。(3)填寫加入該論壇所需要的信息和自己希望提供的其他信息,單擊Submit按扭。(4)您會(huì)收到ー封電子郵件,其中的信息描述了如何驗(yàn)證賬戶,完成加入過(guò)程。注釋:不加入P2P也可以閱讀論壇上的消息,但要張貼自己的消息,就必須加入該論壇.加入論壇后,就可以張貼新消息,響應(yīng)其他用戶張貼的消息??梢噪S時(shí)在Web上閱讀消息。如果要止該網(wǎng)站給自己發(fā)送特定論壇中的消息,可以單擊論壇列表中該論壇名旁邊的SubseribetothisForum圖標(biāo)。關(guān)于使用WroxP2P的更多信息,可閱讀P2PFAQ,了解論壇軟件的工作情況以及P2P和Wrox圖書的許多常見問(wèn)題。要閱讀FAQ,可以在任意P2P頁(yè)面上單擊FAQ鏈接。目錄第I部分C#語(yǔ)言TOC\o"1-5"\h\z第1章C#簡(jiǎn)介 3L1 什么是.NET Framework 3.NETFramework 的內(nèi)容 4用.NETFramework編寫應(yīng)用程序 4什么是C# 7121用C#能編寫什么樣的應(yīng)用程序 71.2.2本書中的C# 8VisualStudio2008 8VisualStudio2008Express產(chǎn)品 9解決方案 9\o"CurrentDocument"小結(jié) 9第2章編‘號(hào)C#程序 102」開發(fā)環(huán)境 10VisualStudio2008 11VisualC#2008ExpressEdition 13控制臺(tái)應(yīng)用程序 13SolutionExplorer 16Properties窗LI 17ErrorList窗口 17WindowsForms應(yīng)用程序 18小結(jié) 22第3章 變量和表達(dá)式 23\o"CurrentDocument"C#的基本語(yǔ)法 23C#控制臺(tái)應(yīng)用程序的基本\o"CurrentDocument"結(jié)構(gòu) 25\o"CurrentDocument"變量 27331簡(jiǎn)單類型 27\o"CurrentDocument"變量的命名 31字面值 32\o"CurrentDocument"變量的聲明和賦值 33\o"CurrentDocument"表達(dá)式 34\o"CurrentDocument"數(shù)學(xué)運(yùn)算符 34賦值運(yùn)算符 38\o"CurrentDocument"運(yùn)算符的優(yōu)先級(jí) 39名稱空間 39\o"CurrentDocument"小結(jié) 42\o"CurrentDocument"練習(xí) 43第4章流程控制 44\o"CurrentDocument"布爾邏輯 44\o"CurrentDocument"位運(yùn)算符 46\o"CurrentDocument"-爾賦值運(yùn)算符 50運(yùn)算符的優(yōu)先級(jí)更新 51\o"CurrentDocument"goto語(yǔ)句 52\o"CurrentDocument"分支 53\o"CurrentDocument"431三元運(yùn)算符 53\o"CurrentDocument"if語(yǔ)句 54\o"CurrentDocument"switch語(yǔ)句 5<7\o"CurrentDocument"循環(huán) 60\o"CurrentDocument"do循環(huán) 61\o"CurrentDocument"while循環(huán) 63\o"CurrentDocument"for循環(huán) 65\o"CurrentDocument"循環(huán)的中斷 69\o"CurrentDocument"無(wú)限循環(huán) 70小結(jié) 70\o"CurrentDocument"練習(xí) 71第5章變量的更多內(nèi)容 72類型轉(zhuǎn)換 72隱式轉(zhuǎn)換 72顯式轉(zhuǎn)換 74使用Convert命令進(jìn)行顯式轉(zhuǎn)換 76復(fù)雜的變量類型 79枚舉 79結(jié)構(gòu) 83數(shù)組 86

字符串的處理 91\o"CurrentDocument"小結(jié) 95\o"CurrentDocument"練習(xí) 96第6章函數(shù) 97定義和使用函數(shù) 98」返回值 99.2參數(shù) 101變量的作用域 107其他結(jié)構(gòu)中變量的作用域 110622參數(shù)和返回值與全対數(shù)據(jù) 111Main。函數(shù) 113結(jié)構(gòu)函數(shù) 114函數(shù)的重載 115委托 117小結(jié) 119練習(xí) 120第7章 調(diào)試和錯(cuò)誤處理 121VS和VCE中的調(diào)試 121非中斷(正常)模式下的調(diào)試.…122中斷模式ド的調(diào)試 131錯(cuò)誤處理 139try-catch…finallv 140722列出和配置異常 144異常處理的注意事項(xiàng) 145小結(jié) 146練習(xí) 146第8章 面向?qū)ο缶幊毯?jiǎn)介 147什么是面向?qū)ο缶幊?147」什么是對(duì)象 148.2所有的東西都是對(duì)象 151對(duì)象的生命周期 1514靜態(tài)和實(shí)例類成員 152OOP技術(shù) 153接口 153繼承 155多態(tài)性 156對(duì)象之間的關(guān)系 157運(yùn)算符重載 159事件 159引用類型和值,類型 160Windows應(yīng)用程序中的OOP-160小結(jié) 162練習(xí) 163第9章 定義類 164C#中的類定義 164System,Object 169構(gòu)造函數(shù)和析構(gòu)函數(shù) 170VS和VCE中的OOP工具 174ClassView窗口 174對(duì)象瀏覽器 176添加類 177類圖 177類庫(kù)項(xiàng)目 179接口和抽象類 182結(jié)構(gòu)類型 184小結(jié) 186練習(xí) 186第10章 定義類成員 187成員定義 187定義字段 187定義方法 188定義屬性 189在類圖中添加成員 194―制成員 196自動(dòng)屬性 197類成員的其他議題 197隱藏基類方法 198調(diào)用重:‘與或隱藏的基類方法?…-199嵌套的類型定義 200接口的實(shí)現(xiàn) 201部分類定義 204部分方法定義 206示例應(yīng)用程序 207規(guī)劃應(yīng)用程序 207編寫類庫(kù) 208

類庫(kù)的客戶應(yīng)用程序 21410.フ 小結(jié) 21510.8 練習(xí) 216第11章 集合、比較和轉(zhuǎn)換 217\o"CurrentDocument"11.1 集合 217\o"CurrentDocument"11丄1使用集合 218\o"CurrentDocument"定義集合 224\o"CurrentDocument"索引符 225\o"CurrentDocument"給CardLib添加Cards集合 227\o"CurrentDocument"5關(guān)鍵字值集合和【Dictionary 229\o"CurrentDocument"6 迭代器 231\o"CurrentDocument"7深度復(fù)制 2368 給CardLib添加深度復(fù)制……238\o"CurrentDocument"比較 239\o"CurrentDocument"類型比較 240\o"CurrentDocument"值比較 244\o"CurrentDocument"轉(zhuǎn)換 259\o"CurrentDocument"重載轉(zhuǎn)換運(yùn)算符 259\o"CurrentDocument"as運(yùn)算符 260小結(jié) 261\o"CurrentDocument"練刁 262笫12章泛型 263泛型的概念 263使用泛型 264.!可空類型 264.2System.Collections.Generic名稱空間 271定義泛型 279定義泛型類 280定義泛型接U 291定義泛型方法 291定義泛型委托 293小結(jié) 293練習(xí) 293第13章其他。OP技術(shù) 295::運(yùn)算符和全局名稱空間定制異常 296」異?;?297.2 給CardLib添加定制異常 297事件 298什么是事件 298使用事件 300定義密件 302擴(kuò)展和使用CardLib 309小結(jié) 317練習(xí) 317第14章 C#3.0語(yǔ)言的改進(jìn) 318初始化器 318對(duì)象初始化器 319集合?初始化器 320類型推斷 323匿名類型 325擴(kuò)展方法 328L表達(dá)式 333復(fù)習(xí)陪.名方法 333把入?達(dá)式用廣度表方法 334大表達(dá)式的參數(shù) 337表達(dá)式的語(yǔ)句體 337表達(dá)式用作委托和表達(dá)式樹 338表達(dá)式和集合 339小結(jié) 342練習(xí) 342第II部分Windows編程\o"CurrentDocument"第15章 Windows編程基礎(chǔ) 347\o"CurrentDocument"控件 347\o"CurrentDocument"屬性 348控件的定位、??亢蛯?duì)齊????-349\o"CurrentDocument"事件 350\o"CurrentDocument"Button控件 352\o"CurrentDocument"Button控件的屬性 352\o"CurrentDocument".2Button控件的事件 353\o"CurrentDocument"Label和LinkLabel控件 354\o"CurrentDocument"TextBox控件 355

\o"CurrentDocument"TextBox控件的屬性 355\o"CurrentDocument"1542 TextBox控件的事件 356RadioButton和CheckBox\o"CurrentDocument"控件 363\o"CurrentDocument"1551 Rad沁Button控件的屬性 364\o"CurrentDocument"1552 RadioButlon控件的事件 364\o"CurrentDocument"]5,53 CheckBox控件的屬性 364\o"CurrentDocument"1554 CheckBox控件的事件 364\o"CurrentDocument"15.5.5 GroupBox控件 365RichTextBox控件 ,,,,368\o"CurrentDocument"RichTcxtBox控件的屬性 368\o"CurrentDocument"1562 RichTexlBox控件的事件 369ListBox和CheckedListBox\o"CurrentDocument"控件 374\o"CurrentDocument"ListBox控件的屬性 375\o"CurrentDocument"ListBox控件的方法 376\o"CurrentDocument"ListBox控件的事件 376\o"CurrentDocument"ListView控件 378\o"CurrentDocument"istView控件的屬性 378\o"CurrentDocument"1582ListView控件的方法 380\o"CurrentDocument"ListView控件的事件 381\o"CurrentDocument"け.8.4ListViewllem 381\o"CurrentDocument"ColumnHeader’’ 381\o"CurrentDocument"1586ImageList控件 381\o"CurrentDocument"TabControl控件 388\o"CurrentDocument"1591TabControl控件的屬性 389\o"CurrentDocument"15.9.2使用TabControl控件 389\o"CurrentDocument"小結(jié) 392\o"CurrentDocument"練習(xí) 392第16章 WindowsForms的高級(jí)功能…393菜單和工具欄 393兩個(gè)實(shí)質(zhì)ー樣的控件 39316丄2使用MemiSt而控件 39416丄3手工創(chuàng)建菜單 394ToolStriDMenuItem控件的其他屬性 397給菜單添加功能 397工具欄 399ToolStri口控件的屬性 3991622 ToolSlrb的項(xiàng) 400StatusStri口控件 4051624 StalHStripStatusLabel的屬性 405SDI和MDI應(yīng)用程序 407創(chuàng)建控件 415LabelTextbox控件 4171642調(diào)試用戶控件 420擴(kuò)展LabelTextbox 控件 421小結(jié) 424練習(xí) 424第17章使用通用對(duì)話框 425通用對(duì)話框 425如何使用對(duì)話框 426文件對(duì)話框 4270口enFileDialog 427SaveFileDialog ”… 438打印 442打印結(jié)構(gòu) 4421742打印多個(gè)頁(yè)面 4471743 PageSetupDialogr 4491744 PrintDialog 451打印預(yù)覽 4551751 PrintPreviewDialog 45517.5.2 PrintPreviewControI 456FontDialogネロColorDialog 457FontDialog 4571762 ColorDialog 4591763 FolderBrowserDialog 460小結(jié) 461練習(xí) 461第18章 部署Windows應(yīng)用程序 463部署概述 463ClickOnce部署 464VisualStudio安裝和部署項(xiàng)目類型 473MicrosoftWindows安裝程序結(jié)構(gòu) 474

WindowsInstaller術(shù)語(yǔ) 474WindowsInstaller的優(yōu)點(diǎn) 476為SimpleEditor創(chuàng)建安裝軟件包 476規(guī)劃安裝內(nèi)容 476倉(cāng)リ建項(xiàng)目 477項(xiàng)目屬性 478安裝編輯卷 4801855 FileSystem編輯器 481FileTypes編輯瑞 483&5.7 LaunchCondition編輯器 485UserInle命c(diǎn)e編輯器 485構(gòu)建項(xiàng)目 488安裝 489Welcome 4891872 ReadMe 489LicenseAgreement 4901874 OptionalFiles 490選擇安裝文件夾 491確認(rèn)安裝 492進(jìn)度 492結(jié)束安裝 493運(yùn)行應(yīng)用程序 493卸載 493小結(jié) 493練習(xí) 494第山部分Web編程第19章Web編程基礎(chǔ) 49719」概述 497ASP.NET運(yùn)行庫(kù) 498創(chuàng)建簡(jiǎn)單的Web頁(yè)面 498服務(wù)器控件 504事件處理程序 505輸入的有效性驗(yàn)證 509狀態(tài)管理 512客戶端的狀態(tài)管理 513服務(wù)器端的狀態(tài)管理 515身份驗(yàn)證和授權(quán) 517身份驗(yàn)證的配置 518使用安全控件 522讀寫SQLServer數(shù)據(jù)庫(kù) 524小結(jié) 530練習(xí) 531第20章 Web高級(jí)編程 532母版頁(yè) 532站點(diǎn)導(dǎo)航 537用戶控件 539個(gè)性化配置 5412041個(gè)性化配置組 543組件的個(gè)性化配置 543定制數(shù)據(jù)類型中的個(gè)性化配置 5432044一一用戶的個(gè)性化配置 544WebParts 545/WebPartManaget?控件 5462052WebPartZone控件 546.3EditorZone控件 5482054CatalogZone控件 5502055ConnectionsZone控件 551JavaScript 554Scrim元素 5552062變量的聲明 5552063定義函數(shù) 5552064語(yǔ)句 5562065對(duì)象 556小結(jié) 560練習(xí) 560第21章 Web服務(wù) 561Web服務(wù)推出之前 561遠(yuǎn)程過(guò)程調(diào)用(RPC) 562SOAP 563使用Web服務(wù)的場(chǎng)合 563賓館旅行社代理應(yīng)用程序……564圖書發(fā)布應(yīng)用程序 564客戶應(yīng)用程序的類型 564

564565565566567568568568570571572574577580581584584586586587591592594598600600601601602604606607607609610610應(yīng)用程序的體系結(jié)構(gòu) Web服務(wù)的體系結(jié)構(gòu) 可以調(diào)用的方法 2132調(diào)用方法 SOAP和防火墻 2134WS-I基本個(gè)性化配置 Web服務(wù)和.NETFramework 創(chuàng)建Web服務(wù) 客戶程序 創(chuàng)建簡(jiǎn)單的ASP.NETWeb服務(wù) 測(cè)試Web月艮務(wù) 執(zhí)行Windows客戶程序 異步調(diào)用服務(wù) 執(zhí)行ASP.NET客戶程序 傳送數(shù)據(jù) 小結(jié) 練習(xí) 第22章Aiax編程 Aiax概述 UpdatePanel控件 Timer控件 UpdateProgress控件 Web服務(wù) _度 小結(jié) 練習(xí) 第23章部署Web應(yīng)用程序 InternetInformat沁nServices??…HS配置 復(fù)制Web站點(diǎn) 發(fā)布Web站點(diǎn) Windows安裝程序 創(chuàng)建安裝程序 安裝Web應(yīng)用程序 小結(jié) 練習(xí) 第!V部分?jǐn)?shù)據(jù)訪問(wèn)TOC\o"1-5"\h\z第24章文件系統(tǒng)數(shù)據(jù) 613流 613用于輸入和輸出的類 614File類和Directory類 615Fileinfo類 6162423 Directorylnfb類 617路徑名和相對(duì)路徑 618FileStream對(duì)象 618StreamWriter對(duì)象 624StreamReader対象 626讀寫壓縮文件 632丿予タリ化對(duì)象 635監(jiān)控文件結(jié)構(gòu) 639小結(jié) 645練習(xí) 646第25章 XML 647XML 文檔 647XML元素 647屬性 648XML聲明 649XML文檔的結(jié)構(gòu) 649XML名稱空間 650格式良好并冇效的XML 651驗(yàn)證XML文檔 651在應(yīng)用程序中使用XML 654XML文檔對(duì)象模型 655選擇節(jié)點(diǎn) 663小結(jié) 670練習(xí) 671第26章LINQ簡(jiǎn)介 672\o"CurrentDocument"LINO 的變體 673\o"CurrentDocument"第?個(gè)LINO查詢 673川vai?關(guān)鍵字聲明結(jié)果變量 675指定數(shù)據(jù)源:fh)m子句 675指定條件:where子句 675指定元素:select子句 676

完成:使用foreach循環(huán) 676延遲執(zhí)行的?詢 676\o"CurrentDocument"使用LINO方法語(yǔ)法和入表達(dá)式 676LINO擴(kuò)展方法 676—詢語(yǔ)法和方法語(yǔ)法 677表達(dá)式 677\o"CurrentDocument"排序查詢結(jié)果 679\o"CurrentDocument"orderbv/句 680\o"CurrentDocument"用方法語(yǔ)法排序 681\o"CurrentDocument"查詢大型數(shù)據(jù)集 682\o"CurrentDocument"合計(jì)運(yùn)算符 685\o"CurrentDocument"査詢笈雜的對(duì)象 688\o"CurrentDocument"投射:在査詢中創(chuàng)建新對(duì)象 691投射:方法語(yǔ)法 693單值選擇查詢 693\o"CurrentDocument"Any和AU 694\o"CurrentDocument"多級(jí)排序 696\o"CurrentDocument"多級(jí)排序方法語(yǔ)法:ThenBy 698\o"CurrentDocument"組合查詢 698\o"CurrentDocument"Take和Skip 700\o"CurrentDocument"First和FirstOrDefault 702\o"CurrentDocument"集運(yùn)算符 703\o"CurrentDocument"Join查詢 706資源和進(jìn)一?步閱讀 707\o"CurrentDocument"小結(jié) 707\o"CurrentDocument"練習(xí) 707第27章LINQto SQL 709對(duì)象相關(guān)映射 709安裝SQLServer和Northwind示例數(shù)據(jù) 710安裝SOLServerExpress2005 710安裝Northwind示例數(shù)據(jù)庫(kù) 711第?個(gè)LINOtoSOL查詢 712瀏覽LINOtoSOL關(guān)系 717進(jìn)一步探討LINOto SQL 720LIN。toSQL中的組合、排序和其他高級(jí)杳詢 723顯示生成的SOL 725用LINOtoSQL綁定數(shù)據(jù) 729用LIN。toSOL更新綁定數(shù)據(jù) 733小結(jié) 734練習(xí) 735第28章ADO.NET和LINQoverDataSet 736ADO.NET概述 736ADO.NET名稱的來(lái)源 737ADO.NET的設(shè)計(jì)目標(biāo) 738ADO.NET類和對(duì)象概述 739提供者對(duì)象 739用戶對(duì)象 740使-Svstem.Data名稱空間??,?741用DataReader讀取數(shù)據(jù) 742用DataSet讀取數(shù)據(jù) 749用數(shù)據(jù)填充DataSet 749訪問(wèn)DataSet中的衣、行和列 749更新數(shù)據(jù)庫(kù) 752給數(shù)據(jù)庫(kù)添加行 755刪除行 761在DataSet屮訪問(wèn)多個(gè)表 762ADO.NET中的關(guān)系 762用關(guān)系導(dǎo)航 763XML和ADO.NET 770ADO.NET中的SOL支持 773DataAdapter對(duì)象中的SOL命令 773白:接執(zhí)行SOL命令 776調(diào)用SQL存儲(chǔ)過(guò)程 778使用LINOoverDataSet和ADO.NET 780小結(jié) 784

練習(xí) 784第29?章:LINQtoXML 78529」LINOtoXML函數(shù)構(gòu)造方法?…785保存和加載XML文檔 7892.1從一符串中加載XML 791已,保存:的XML文檔內(nèi)容?……792處理XML片段 792通過(guò)LINOtoXML生成XML 794查詢XML文檔 798小結(jié) 804練習(xí) 804第V部分其他技術(shù)第30章屬性 809什么是屬性 809反射 812內(nèi)置屬性 815System.Diagnostics.CondilionalAttribule 815System.ObsoleteAttribute 817System.Se3alizabIeAttribute 818System.Reflection.AssemblyDelaySignAttribute 821定制屬性 824BugFixAttribute 824Systcm.AttributeUsageAttribute 826小結(jié) 830笫31章XML文檔說(shuō)明 831添加XML文檔說(shuō)明 831XML文檔說(shuō)明的注擇 833使用類圖添加XML文檔說(shuō)明 839生成XML文檔說(shuō)明文件 842帶有XML文檔說(shuō)明的應(yīng)川程序示例 844使用XML文檔說(shuō)明 846編程處理XML文檔說(shuō)明?……846用XSLT格式化XML文檔說(shuō)明 848文檔說(shuō)明工具 849小結(jié) 850練習(xí) 851第32章網(wǎng)絡(luò) 852聯(lián)網(wǎng)概述 852名稱的解析 855統(tǒng)ー資源標(biāo)識(shí)符 856TCP和UDP 857應(yīng)用協(xié)議 857網(wǎng)絡(luò)編程選項(xiàng) 859WebClient 859WcbRequest和WcbRcsponse--861TcpListener和TcpClient 868小結(jié) 876練習(xí) 876第33_章 GDI+簡(jiǎn)介 877圖形繪制概述 877Graphics類 878對(duì)象的刪除 878坐標(biāo)系統(tǒng) 879顏色 884使用Pen類繪制線條 885使用Brush類繪制圖形 887使用Font類繪制文本 890使用圖像進(jìn)行繪制 8933351使用紋理阿?繪圖 895使用鋼筆繪制圖像 897雙倍緩沖 898GDI+的高級(jí)功能 900剪切 900Systcm.Drawing.Drawing2D…,901

TOC\o"1-5"\h\zSystem.Drawing.Imaging 90133.フ 小結(jié) 90133.8 練習(xí) 902第34章:WindowsPresentationFoundation 903WPF的概念 904WPF給設(shè)計(jì)人員帶來(lái)的好處 904WPF給C#開發(fā)人員帶來(lái)的好處 906基本W(wǎng)PF應(yīng)用程序的組成 906WPF 基礎(chǔ) 916XAML語(yǔ)法 917桌面和Web應(yīng)用程序 919Application對(duì)象 920控件基 920控件的布局 928控件的樣式 936觸發(fā)器 941動(dòng)畫 942靜態(tài)和動(dòng)態(tài)資源 944用WPF編程 949WPF川戶控件 950實(shí)現(xiàn)依賴屬性 950小結(jié) 959練習(xí) 960第35覃: WindowsCommunication\o"CurrentDocument"Foundation 961\o"CurrentDocument"WCF 是什么 961\o"CurrentDocument"WCF 概念 962WCF通信協(xié)議 9623522 地址、端點(diǎn)和綁定 963合同 9643524消息模式 965行為 965主機(jī) 965\o"CurrentDocument"WCF 編程 9663531定義WCF服務(wù)合同 97335.3.2自存儲(chǔ)的WCF服務(wù) 979小結(jié) 985練習(xí) 986第36章 Windows WorkflowFoundation 987活動(dòng) 990DelayAclivity 990SuspendActivity 991WhileAclivily 992SequenceActivity 994定制活動(dòng) 997工作流運(yùn)行庫(kù) 1002數(shù)據(jù)綁 1007小結(jié) 1010變量和表達(dá)式要想高效地學(xué)習(xí)C#的用法,重要的是理解創(chuàng)建計(jì)算機(jī)程序時(shí)需要做什么。計(jì)算機(jī)程序最基本的描述也許是ー系列處理數(shù)據(jù)的操作,即使是最復(fù)雜的示例,這個(gè)論述也正確,例如,MicrosoftOffice套裝軟件之類的大型多功能的Windows應(yīng)用程序。應(yīng)用程序的用戶雖然看不到它們,但這些操作總是在后臺(tái)進(jìn)行。為了進(jìn)ー步解釋它,考慮ー下計(jì)算機(jī)的顯示單元。我們常常比較熟悉屏幕上的內(nèi)容,很難不把它想像為“移動(dòng)的圖片”。但實(shí)際上,我們看到的僅是ー些數(shù)據(jù)的顯示結(jié)果,其最初的形式是存儲(chǔ)在計(jì)算機(jī)內(nèi)存中的。和1數(shù)據(jù)流。因此我們?cè)谄聊簧线M(jìn)行的任何操作,無(wú)論是移動(dòng)鼠標(biāo)指針,單擊圖標(biāo),或在字處理器上輸入文本,都會(huì)改變內(nèi)存中的數(shù)據(jù)。當(dāng)然,還可以利用一些較簡(jiǎn)單的情形來(lái)說(shuō)明這一點(diǎn)。如果使用計(jì)算器應(yīng)用程序,就要提供數(shù)字,對(duì)這些數(shù)字執(zhí)行操作,就像用紙和筆計(jì)算數(shù)字ー樣,但使用程序會(huì)快得多。如果計(jì)算機(jī)程序是在對(duì)數(shù)據(jù)執(zhí)行操作,則說(shuō)明我們需要以某種方式來(lái)存儲(chǔ)數(shù)據(jù),需要某些方法來(lái)處理它們。這兩種功能是由變量和表達(dá)式提供的,本章將探究它們的含義。本章的主要內(nèi)容:C#的基本語(yǔ)法變量及其用法表達(dá)式及其用法在開始之前,應(yīng)先了解一下C#編程的基本語(yǔ)法,因?yàn)槲覀冃枰粋€(gè)環(huán)境來(lái)學(xué)習(xí)使用C#語(yǔ)言中的變量和表達(dá)式。C#的基本語(yǔ)法C#代碼的外觀和操作方式與C++和Java非常類似。初看起來(lái),其語(yǔ)法可能比較混亂,不像書面英語(yǔ)和其他語(yǔ)言。但是,在c#編程中,使用的樣式是比較清晰的,不用花太多的カ氣就可以編寫出可讀性很強(qiáng)的代碼。與其他語(yǔ)言的編譯器不同,無(wú)論代碼中是否有空格、回車符或tab字符(這些字符統(tǒng)稱為空白字符),C#編譯器都不考慮這些字符。這樣格式化代碼時(shí)就有很大的自由度,但遵循某些規(guī)則將有助于閱讀代碼。C#代碼由一系列語(yǔ)句組成,每個(gè)語(yǔ)句都用一個(gè)分號(hào)來(lái)結(jié)束。因?yàn)榭崭癖缓雎?,所以一行可以有多個(gè)語(yǔ)句,但從可讀性的角度來(lái)看,通常在分號(hào)的后面加上回車符,這樣就不能在一行上放置多個(gè)語(yǔ)句了。但一句代碼放在多個(gè)行上是可以的(也比較常見)。C#是?種塊結(jié)構(gòu)的語(yǔ)言,所有的語(yǔ)句都是代碼塊的一部分。這些塊用花括號(hào)來(lái)界定(”ド和"}"),代碼塊可以包含任意多行語(yǔ)句,或者根本不包含語(yǔ)句。注意花括號(hào)字符不需要附帶分號(hào)。所以,簡(jiǎn)單的C#代碼塊如下所示:(<codeline1,statement1>;<codeline2,statement2><codeline3,statement2>;}其中〈codelinex,statementy>部分并不是真正的C#代碼,而是用這個(gè)文本作為C#語(yǔ)句的占位符。在這段代碼中,第2、3行代碼是同一個(gè)語(yǔ)句的一部分,因?yàn)樵诘?行的末尾沒有分號(hào)。在這個(gè)簡(jiǎn)單的代碼塊中,還使用了縮進(jìn)格式,使C#代碼的可讀性更高。這是ー個(gè)標(biāo)準(zhǔn)規(guī)則,實(shí)際上在默認(rèn)情況下VS會(huì)自動(dòng)縮進(jìn)代碼。一般情況下,每個(gè)代碼塊都有自己的縮進(jìn)級(jí)別,即它向右縮進(jìn)了多少。代碼塊可以互相嵌套(即塊中可以包含其他塊),而被嵌套的塊要縮進(jìn)得多一些。(<codeline1>;(<codeline2>;<codeline3>;}<codeline4>;}前面代碼的續(xù)行通常也要縮進(jìn)得多一些,如上面第一個(gè)示例中的第3行代碼所示。注釋:在能通過(guò)Tools|Options訪問(wèn)的VCEOptions對(duì)話框中,顯示了VCE用于格式化代碼的規(guī)則.在TextEditor|C#|Formatting節(jié)點(diǎn)的子目錄下,包含了完整的格式化規(guī)則。此處的大多數(shù)設(shè)置都反映了還沒有講述的C#部分,但如果以后要修改設(shè)置,以更適合自己的個(gè)性化樣式,就可以回過(guò)頭來(lái)看看這些設(shè)置。在本書中,為了簡(jiǎn)潔起見,所有的代碼段都使用默認(rèn)設(shè)置來(lái)格式化。當(dāng)然,這種樣式并不是強(qiáng)制的。但如果不使用它,讀者在閱讀本書時(shí)會(huì)很快陷入迷茫之中。在C#代碼中,另ー個(gè)常見的語(yǔ)句是注釋。注釋并不是嚴(yán)格意義上的C#代碼,但代碼最好有注釋。注釋就是解釋,即給代碼添加描述性文本(用英語(yǔ)、法語(yǔ)、德語(yǔ)、外蒙古語(yǔ)等),編譯器會(huì)忽略這些內(nèi)容。在開始處理比較長(zhǎng)的代碼段時(shí),注釋可用于給正在進(jìn)行的工作添加提示,例如“這行代碼要求用戶輸入ー個(gè)數(shù)字”,或“這段代碼由Bob編寫"。C#添加注釋的方式有兩種??梢栽谧⑨尩拈_頭和結(jié)尾放置標(biāo)記,也可以使用ー個(gè)標(biāo)記,其含義是“這行代碼的其余部分是注釋”。在C#編譯器忽略回車符的規(guī)則中,后者是ー個(gè)例外,但這是ー種特殊情況。要使用第一種方式標(biāo)記注釋,可以在注釋的開頭加上在末尾加上“ッ”。這些注釋符號(hào)可以在單獨(dú)一行上,也可以在不同的行上,注釋符號(hào)之間的所有內(nèi)容都是注釋。注釋中唯一不能輸入的是因?yàn)樗鼤?huì)被看作注釋結(jié)束標(biāo)記。所以下面的語(yǔ)句是正確的。/*Thisisacomment*//*Andsoisthis!*/但下面的語(yǔ)句會(huì)產(chǎn)生錯(cuò)誤:/*Commentsoftenendwith"*/"characters*/注釋結(jié)束符號(hào)后的內(nèi)容("*/"后面的字符)會(huì)被當(dāng)作C#代碼,因此產(chǎn)生錯(cuò)誤。另ー個(gè)添加注釋的方法是用’ソ/”開始ー個(gè)注釋,在其后可以編寫任何內(nèi)容,只要這些內(nèi)容在一行上即可。下面的語(yǔ)句是正確的://Thisisadifferentsortofcomment.但下面的語(yǔ)句會(huì)失敗,因?yàn)榈诙写a會(huì)解釋為C#代碼://Soisthis,butthisbitisn*t.這類注釋可用于語(yǔ)句的說(shuō)明,因?yàn)樗鼈兌挤旁谝恍猩?<Astatement>; //Explanationofstatement前面說(shuō)過(guò)有兩種給C#代碼添加注釋的方法。但在C#中,還有第三類注釋,嚴(yán)格地說(shuō),這是〃語(yǔ)法的擴(kuò)展。它們都是單行注釋,用三個(gè)"/"符號(hào)來(lái)開頭,而不是兩個(gè)。///Aspecialcomment在正常情況下,編譯器會(huì)忽略它們,就像其他注釋ー樣,但可以配置VS,在編譯項(xiàng)目時(shí),提取這些注釋后面的文本,創(chuàng)建一個(gè)特殊格式的文本文件,該文件可用于創(chuàng)建文檔說(shuō)明書。具體內(nèi)容見第31章。特別要注意的一點(diǎn)是,C#代碼是區(qū)分大小寫的。與其他語(yǔ)言不同,必須使用正確的大小寫形式輸入代碼,因?yàn)楹?jiǎn)單地用大寫字母代替小寫字母會(huì)中斷項(xiàng)目的編譯??纯聪旅孢@行代碼,它在第2章的第一個(gè)示例中使用:Console.WriteLine("ThefirstappinBeginningC#Programming!");C#編譯器能理解這行代碼,因?yàn)镃onsole.WriteLine。命令的大小寫形式是正確的。但是,下面的語(yǔ)句都不能工作:console.WriteLine("ThefirstappinBeginningC#Programming!");CONSOLE.WRITELINE("ThefirstappinBeginningC#Programming!");Console.Writeline("ThefirstappinBeginningC#Programming!");這里使用的大小寫形式是錯(cuò)誤的,所以C#編譯器不知道我們要做什么。幸好,VCE在代碼的輸入方面提供了許多幫助,在大多數(shù)情況下,它都知道(程序也知道)我們要做什么。在輸入代碼的過(guò)程中,VS會(huì)推薦用戶可能要使用的命令,并盡可能糾正大小寫問(wèn)題。3.2 C#控制臺(tái)應(yīng)用程序的基本結(jié)構(gòu)下面看看第2章的控制臺(tái)應(yīng)用程序示例(ConsoleApplicationl),并研究,下它的結(jié)構(gòu)。其代碼如下所示:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplicationl(classProgram(staticvoidMain(string[]args)(//Outputtexttothescreen.Console.WriteLine("ThefirstappinBeginningC#Programming!");Console.ReadKey();可以立即看出,上ー節(jié)討論的所有語(yǔ)法元素這里都有。其中有分號(hào)、花括號(hào)、注釋和適當(dāng)?shù)目s進(jìn)。目前看來(lái),這段代碼中最重要的部分如下所示:staticvoidMain(string[]args)(//Outputtexttothescreen.Console.WriteLine("ThefirstappinBeginningC#Programming!");Console.ReadKey();}在運(yùn)行控制臺(tái)應(yīng)用程序時(shí),就會(huì)運(yùn)行這段代碼,更準(zhǔn)確地說(shuō),是運(yùn)行花括號(hào)中的代碼塊。如前所述,注釋行不做任何事情,包含它們只為了簡(jiǎn)潔而已。其他兩行代碼在控制臺(tái)窗口中輸出了一些文本,并等待ー個(gè)響應(yīng).但目前我們還不需要關(guān)心它的具體機(jī)制。這里要注意一下如何實(shí)現(xiàn)第2章介紹的代碼突出顯示功能,這對(duì)于Windows應(yīng)用程序來(lái)說(shuō)比較.重要,因?yàn)樗?個(gè)非常有用的特性。要實(shí)現(xiàn)該功能,需要使用#region和#endregion關(guān)鍵字,來(lái)定義可以展開和折疊的代碼區(qū)域的開頭和結(jié)尾。例如,可以修改為ConsoleApplication!生成的代碼,如下所示:#regionUsingdirectivesusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;『endregion這樣就可以把這些代碼行折疊為一行,以后要查看其細(xì)節(jié)時(shí),可以再次展開它。這里包含的using語(yǔ)句和其下的namespace語(yǔ)句將在本章的后面解釋。注釋:以#開頭的任意關(guān)鍵字實(shí)際上都是ー個(gè)預(yù)處理指令,嚴(yán)格地說(shuō)并不是C#關(guān)鍵字.除了這里描述的#region和#endregion關(guān)鍵字之外,其他關(guān)鍵字都相當(dāng)復(fù)雜,用法也比較專業(yè).所以,這是ー個(gè)讀者通讀全書后才能探究的主題。現(xiàn)在不必考慮示例中的其他代碼,因?yàn)楸緯皫渍聝H解釋C#的基本語(yǔ)法,至于應(yīng)用程序進(jìn)行Console.WriteLine。調(diào)用的具體方式,則不在我們的考慮之列。以后會(huì)闡述這些代碼的重要性。3.3變量如前所述,變量關(guān)系到數(shù)據(jù)的存儲(chǔ)。實(shí)際上,可以把計(jì)算機(jī)內(nèi)存中的變量看作架子上的盒子。在這些盒子中,可以放入ー些東西,再把它們?nèi)〕鰜?lái),或者只是看看盒子里是否有東西。變量也是這樣,數(shù)據(jù)可放在變量中,可以從變量中取出數(shù)據(jù)或查看它們。盡管計(jì)算機(jī)中的所有數(shù)據(jù)都是相同的東西(ー組0和1),但變量有不同的內(nèi)涵,稱為類型。下面再使用盒子來(lái)類比,盒子有不同的形狀和尺寸,某些東西只能放在特定的盒子中。建立這個(gè)類型系統(tǒng)的原因是,不同類型的數(shù)據(jù)需要用不同的方法來(lái)處理。變量限定為不同的類型,可以避免混淆它們。例如,組成數(shù)字圖片的0和1序列與組成聲音文件的0和1序列,其處理方式是不同的。要使用變量,需要聲明它們。即給變量指定名稱和類型。聲明了變量后,就可以把它們用作存儲(chǔ)單元,存儲(chǔ)聲明的數(shù)據(jù)類型的數(shù)據(jù)。聲明變量的C#語(yǔ)法是,指定類型和變量名,如下所示:<type><name>;如果使用未聲明的變量,代碼就不會(huì)編譯,但此時(shí)編譯器會(huì)告訴我們出現(xiàn)了什么問(wèn)題,所以這不是一個(gè)災(zāi)難性錯(cuò)誤。另外,使用未賦值的變量也會(huì)產(chǎn)生一個(gè)錯(cuò)誤,編譯器會(huì)檢測(cè)出這個(gè)錯(cuò)誤。可以使用的變量類型是無(wú)限多的。其原因是可以自己定義類型,存儲(chǔ)各種復(fù)雜的數(shù)據(jù)。盡管如此,總有一些數(shù)據(jù)類型是每個(gè)人都要使用的,例如,存儲(chǔ)數(shù)值的變量。因此,我們應(yīng)了解ー些簡(jiǎn)單的預(yù)定義類型。3.3.1簡(jiǎn)單類型簡(jiǎn)單類型就是組成應(yīng)用程序中基本組成部件的類型,例如,數(shù)值和布爾值(true或回se)。簡(jiǎn)單類型與復(fù)雜類型不同,不能有子類型或?qū)傩?。大多?shù)簡(jiǎn)單類型都是存儲(chǔ)數(shù)值的,初看起來(lái)有點(diǎn)奇怪,肯定只需要一種類型來(lái)存儲(chǔ)數(shù)值嗎?數(shù)值類型過(guò)多的原因是在計(jì)算機(jī)內(nèi)存中,把數(shù)字作為一系列的。和1來(lái)存儲(chǔ)的機(jī)制。對(duì)于整數(shù)值,用一定的位(單個(gè)數(shù)字,可以是。或1)來(lái)存儲(chǔ),用二進(jìn)制格式來(lái)表示。以N位來(lái)存儲(chǔ)的變量可以表示任何介于〇到(2電1)之間的數(shù)。大于這個(gè)值的數(shù)因?yàn)樘?所以不能存儲(chǔ)在這個(gè)變量中。例如,有一個(gè)變量存儲(chǔ)了2位,在整數(shù)和表示該整數(shù)的位之間的映射應(yīng)如下所示:0=00=01=10=11如果要存儲(chǔ)更大的數(shù),就需要更多的位(例如,3位可以存儲(chǔ)0-7的數(shù))。這個(gè)論點(diǎn)的結(jié)論是要存儲(chǔ)每個(gè)可以想像得到的數(shù),就需要非常多的位,這并不適合PC。即使可以用足夠多的位來(lái)表示每ー個(gè)數(shù),變量使用這些位來(lái)存儲(chǔ)它,其效率也非常低下,例如,只需要存儲(chǔ)從0~10之間的數(shù)(因?yàn)榇鎯?chǔ)器被浪費(fèi)了)。其實(shí)4位就足夠了,可以用相同的內(nèi)存空間存儲(chǔ)這個(gè)范圍內(nèi)的更多數(shù)值。相反,許多不同的整數(shù)類型可以用于存儲(chǔ)不同范圍的數(shù)值,占用不同的內(nèi)存空間(至多64位),這些類型如表3-1所示。表3-1類型另リ名允許的值sbyteSystem.SByte在-128727之間的整數(shù)byteSystem.Byte在0-255之間的整數(shù)shortSystem.lntI6在ー32768—32767之間的整數(shù)ushortSystem.UInt16在0~65535之冋的整數(shù)intSystem.Int32在ー2147483648-2147483647之間的整數(shù)uintSystem.UInt32在07294967295之間的整數(shù)longSystem.Int64在ー9223372036854775808-9223372036854775807之間的整數(shù)ulongSystem.Ulnt64在0-18446744073709551615之間的整數(shù)注意:這些類型中的每一種都利用了.NETFramework中定義的標(biāo)準(zhǔn)類型.如第1章所述,使用標(biāo)準(zhǔn)類型可以在語(yǔ)言之間交互操作。在C#中這些類型的名稱是Framework中定義的別名,表3-1列出了這些類型在.NETFramework庫(kù)中的名稱.-ー些變量名稱前面的“u”是unsigned的縮寫,表示不能在這些類型的變量中存儲(chǔ)負(fù)號(hào),參見該表中的“允許的值”一列。當(dāng)然,還需要存儲(chǔ)浮點(diǎn)數(shù),它們不是整數(shù)。可以使用的浮點(diǎn)數(shù)變量類型有3種:float、double和decimaL前兩種可以用+/-mx2c的形式存儲(chǔ)浮點(diǎn)數(shù),m和e的值隨著類型的不同而不同。Decimal使用另一種形式:+/-mxlび。這3種類型、其m和e的值,以及它們?cè)趯?shí)數(shù)中的上下限如表3-2所示。類型別名m的最小值m的最大值e的最小值e的最大值近似的最小值近似的最大值floatSystem.Singl5x10書3.4x1038doubleSystem.Doubl0x10-3241.7x1030KdecimalSystem.Decimal0296-2601.0x10287.9x102K除了數(shù)值類型外,還有另外3種簡(jiǎn)單類型,如表3-3所示。表3-3類型另リ名允許的值charSystem.Char?個(gè)Unicode字符,存儲(chǔ)0-65535之間的整數(shù)boolSystem.Boolean布爾值:true或falsestringSystem.Stringー組字符注意組成string的字符數(shù)沒有上限,因?yàn)樗梢允褂每勺兇笮〉膬?nèi)存。布爾類型bool是C#中最常用的ー種變量類型,類似的類型在其他語(yǔ)言的代碼中非常豐富。當(dāng)編寫應(yīng)用程序的邏輯流程時(shí),一個(gè)可以是true或面se的變量有非常重要的分支作用。例如,考慮一下有多少問(wèn)題可以用true或回se(或yes和no)來(lái)回答。執(zhí)行變量值之間的比較或檢査輸入的有效性就是后面使用布爾變量的兩個(gè)編程示例。介紹了這些類型后,下面用一個(gè)小示例來(lái)聲明和使用它們。在下面的示例中,要使用一些簡(jiǎn)單的代碼來(lái)聲明兩個(gè)變量,給它們賦值,再輸出這些值。試試看:使用簡(jiǎn)單類型的變量(1)在目錄C:\BegVCSharp\Ch叩ler03下創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序Ch03Ex01。(2)給Program.cs添加如下代碼:staticvoidMain(string[]args){intmylnteger;stringmyString;mylnteger=17;myString=n\"myInteger\nis";Console.WriteLine("{0}{1}.",myString,mylnteger);Console.ReadKey();}(3)運(yùn)行代碼,結(jié)果如圖3?1所示。圖3?1示例的說(shuō)明我們添加的代碼完成了以下3項(xiàng)任務(wù):聲明兩個(gè)變量給這兩個(gè)變量賦值將兩個(gè)變量的值輸出到控制臺(tái)上變量聲明使用下述代碼:intmylnteger;stringmyString;第一行聲明一個(gè)類型為int的變量mylnteger,第二行聲明一個(gè)類型為string的變量myStringo提示:變量的命名是有限制的,不能使用任意的字符序列。本節(jié)的后面將介紹變量的命名規(guī)則.接下來(lái)的兩行代碼給變量賦值:mylnteger=17;myString="\"mylnteger\"is";使用=賦值運(yùn)算符(在本章的“表達(dá)式”ー節(jié)中將詳細(xì)介紹)給變量分配兩個(gè)固定的值(在代碼中稱為字面值)。把整數(shù)值17賦給mylnteger,把字符串"mylnteger"(包括引號(hào))賦給myString.以這種方式給字符串賦予字面值時(shí),必須用雙引號(hào)把字符串括起來(lái)。因此,如果字符串本身包含雙引號(hào),就會(huì)出現(xiàn)錯(cuò)誤,必須用ー些表示這些引號(hào)字符的其他字符(即轉(zhuǎn)義序列)來(lái)替代它們。在本例中,使用序列、"來(lái)轉(zhuǎn)義雙引號(hào):myString="\"mylnteger\"is";如果不使用這些轉(zhuǎn)義序列,而輸入如下代碼:myString=""mylnteger"is";就會(huì)出現(xiàn)編譯錯(cuò)誤。注意給字符串賦予字面值時(shí),必須小心換行——C#編譯器會(huì)拒絕分布在多行上的字符串字面值。如果要添加一個(gè)換行符,可以在字符串中使用回車換行符的轉(zhuǎn)義序列,即、n。例如,賦值語(yǔ)句:myString="Thisstringhasa\nlinebreak.";會(huì)在控制臺(tái)視圖中顯示兩行代碼,如下

溫馨提示

  • 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)論