版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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開(kāi)發(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)在沒(méi)有理由不從C++轉(zhuǎn)向C#oC#語(yǔ)言并不難,也非常適合于學(xué)習(xí)基本編程技術(shù)。易于學(xué)習(xí),再加上.NETFramework的功能,使C#成為開(kāi)始您編程生涯的絕佳方式。C#的最新版本3.0是.NETFramework3.5的一部分,它建立在已有的成功基礎(chǔ)之上,還添加了一些更吸引人的功能。其中一些功能取自于C++(至少?gòu)谋砻嫔峡词沁@樣),而另外一些功能是全新的。VisualStudio的最新版本和開(kāi)發(fā)工具的Express系列也有許多變化和改進(jìn),這大大簡(jiǎn)化了編程,顯著提高了效率。本書(shū)將全面介紹C#編程的所有知識(shí),從該語(yǔ)言本身一直到Windows和Web編程,再到數(shù)據(jù)源的使用,最后是ー些高級(jí)技術(shù),例如,圖形編程。我們還將學(xué)習(xí)VisualC#Express2008ヽVisualWebDeveloperExpress2008和VisualStudio2008的功能和利用它進(jìn)行應(yīng)用程序開(kāi)發(fā)的各種方式。本書(shū)界面友好,闡述淸晰,每一章都以前面章節(jié)的內(nèi)容為基礎(chǔ),便于讀者掌握髙級(jí)技術(shù)。每個(gè)概念都會(huì)根據(jù)需要來(lái)介紹和討論,而不會(huì)突然冒出某個(gè)技術(shù)術(shù)語(yǔ)來(lái)妨礙讀者的閱讀和理解。本書(shū)盡量不使用技術(shù)術(shù)語(yǔ),但如果需要,將根據(jù)上下文進(jìn)行正確的定義和布置。本書(shū)的作者都是各自領(lǐng)域的專(zhuān)家,都是C#語(yǔ)言和.NETFramework的愛(ài)好者,沒(méi)有人比他們更有資格講授C#了,他們將在您掌握從基本規(guī)則到高級(jí)技術(shù)的過(guò)程中為您保駕護(hù)航。除了基礎(chǔ)知識(shí)之外,本書(shū)還有許多有益的提示、練習(xí)、完全成熟的示例代碼(可以從上下載),在您的職業(yè)生涯中一定會(huì)用到它們。本書(shū)將毫無(wú)保留地傳授這些知識(shí),希望讀者能通過(guò)本書(shū)成為最優(yōu)秀的程序員。0.1本書(shū)讀者對(duì)象本書(shū)主要針對(duì)想學(xué)習(xí)如何使用.NETFramework編寫(xiě)C#程序的所有人。本書(shū)前面的章節(jié)介紹該語(yǔ)言本身,讀者不需要具備任何編程經(jīng)驗(yàn)。以前對(duì)其他語(yǔ)言有一定了解的開(kāi)發(fā)人員,會(huì)覺(jué)得這些章節(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)從頭開(kāi)始學(xué)習(xí)。如果讀者對(duì).NETFramework比較陌生,但知道如何編程,就應(yīng)閱讀第1章,然后快速跳讀后面的幾章,這樣就能掌握C#語(yǔ)言的應(yīng)用方式了。如果讀者知道如何編程,但以前沒(méi)有接觸過(guò)面向?qū)ο蟮木幊陶Z(yǔ)言,就應(yīng)從第8章開(kāi)始閱讀以后的章節(jié)。如果讀者對(duì)C#語(yǔ)言比較了解,就可以集中精力學(xué)習(xí)詳細(xì)論述最新.NETFramework和C#語(yǔ)言開(kāi)發(fā)的章節(jié),尤其是集合、泛型和C#3.0語(yǔ)言的新增內(nèi)容(第11?14章),或者完全跳過(guò)本書(shū)的第I部分,從第15章開(kāi)始學(xué)習(xí)。本書(shū)章節(jié)的編寫(xiě)目的有兩個(gè):這些章節(jié)可以按順序閱讀,是C#語(yǔ)言的一個(gè)完整教程。還可以按照需要深入學(xué)習(xí)這些章節(jié),將其作為一本參考資料。除了核心內(nèi)容之外,每一章還包含一組練習(xí),完成這些練習(xí)有助于讀者理解所學(xué)習(xí)的內(nèi)容。練習(xí)包括簡(jiǎn)單的選擇題、判斷題以及需要修改或建に應(yīng)用程序的較難問(wèn)題。練習(xí)的答案在的本書(shū)Web頁(yè)面上在線(xiàn)提供。0.2本書(shū)結(jié)構(gòu)本書(shū)分為6個(gè)部分。引言:概述本書(shū)的內(nèi)容和作者。C#語(yǔ)言:介紹了C#語(yǔ)言的所有內(nèi)容,從基礎(chǔ)知識(shí)到面向?qū)ο蟮募夹g(shù),應(yīng)有盡有。Windows編程:介紹如何用C#編寫(xiě)Windows應(yīng)用程序,如何部署它們。?Web編程:描述Web應(yīng)用程序的開(kāi)發(fā)、Web服務(wù)和Web應(yīng)用程序的部署。?數(shù)據(jù)訪(fǎng)問(wèn):介紹在應(yīng)用程序中如何使用數(shù)據(jù),包括存儲(chǔ)在硬盤(pán)文件上的數(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ù)。下面介紹本書(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章開(kāi)始介紹C#應(yīng)用程序開(kāi)發(fā),學(xué)習(xí)C#的語(yǔ)法,并把C#和樣例命令行、Windows應(yīng)用程序結(jié)合起來(lái)使用。這些示例將說(shuō)明C#如何快速輕松地啟動(dòng)和運(yùn)行,并附帶介紹VCE和VS開(kāi)發(fā)環(huán)境以及本書(shū)將使用的基本窗口和工具。接著,第3章學(xué)習(xí)C#語(yǔ)言的更多基礎(chǔ)知識(shí),理解變量的含義以及如何操縱它們。第4章將用流程控制(循環(huán)和分支)改進(jìn)應(yīng)用程序的結(jié)構(gòu),第5章介紹一些高級(jí)的變量類(lèi)型,如數(shù)組。第6章開(kāi)始以函數(shù)的形式封裝代碼,這樣就更易于執(zhí)行重復(fù)的操作,代碼更容易理解。從第7章開(kāi)始將運(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í)踐,開(kāi)始在C#應(yīng)用程序中使用OOP時(shí),一切都會(huì)發(fā)生變化,而這正是C#的強(qiáng)大之處。第10章首先介紹如何定義類(lèi)和接口,然后探討類(lèi)成員(包括字段、屬性和方法),在這一章的最后將開(kāi)始創(chuàng)建一個(gè)撲克牌游戲應(yīng)用程序,這個(gè)應(yīng)用程序?qū)⒃趲渍轮虚_(kāi)發(fā)完成,它非常有助于理解OOP。學(xué)習(xí)了OOP在C#中的工作原理后,第11章將介紹幾種常見(jiàn)的OOP場(chǎng)景,包括處理對(duì)象集合、比較和轉(zhuǎn)換對(duì)象。第!2章討論.NET2.0中C#的ー個(gè)非常有用的新特性——泛型,利用它可以創(chuàng)建非常靈活的類(lèi)。第13章通過(guò)ー些其他技術(shù)和事件(它在Windows編程中非常重要)完成C#語(yǔ)言和OOP的討論。最后,第14章介紹C#3.0中引入的新特性。0.2.2Windows編程(第15-18章)第15章開(kāi)始介紹Windows編程的概念,理解在VCE和VS中如何實(shí)現(xiàn)Windows編程。這一章也是從基礎(chǔ)知識(shí)開(kāi)始介紹,并構(gòu)建知識(shí)體系。第16章學(xué)習(xí)如何在應(yīng)用程序中使用.NETFramework提供的各種控件。我們將簡(jiǎn)要論述.NET如何以圖形化的方式建立Windows應(yīng)用程序,以最少的時(shí)間和精力創(chuàng)建高級(jí)應(yīng)用程序。第17章介紹ー些常用的功能。利用這些功能可以方便地添加專(zhuān)業(yè)功能,例如,文件管理、打印等。第!8章討論應(yīng)用程序的部署,包括建立安裝程序,以便用戶(hù)快速安裝和運(yùn)行應(yīng)用程序。0.2.3Web編程(第19?23章)這個(gè)部分的結(jié)構(gòu)與Windows編程部分類(lèi)似。首先,第!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ù)的精彩世界,它可以編程訪(fǎng)問(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)的客戶(hù)端功能。.NETFramework3.5通過(guò)ASP.NETAjax提供了Ajax功能,本章會(huì)解釋如何使用它。最后,第23章探討Web應(yīng)用程序和服務(wù)的部署,尤其是可以通過(guò)單擊按鈕把應(yīng)用程序發(fā)布到Web上的VS和VWD新特性。0.2.4數(shù)據(jù)訪(fǎng)問(wèn)(第24?29章)第24章介紹了應(yīng)用程序如何保存和檢索磁盤(pán)上的數(shù)據(jù),作為簡(jiǎn)單的文本文件或者更復(fù)雜的數(shù)據(jù)表示方式。這一章還將討論如何壓縮數(shù)據(jù),如何操縱舊數(shù)據(jù)(例如,用逗號(hào)隔開(kāi)的值(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最新版本中的查詢(xún)語(yǔ)言。第26章簡(jiǎn)要介紹L1NQ,第27章使用LINQ訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。第28章介紹如何聯(lián)合使用LINQ和舊的ADO.NET數(shù)據(jù)訪(fǎng)問(wèn)技術(shù)。最后,第29章學(xué)習(xí)如何使用LINQ處理XML數(shù)據(jù)。0.2.5其他技術(shù)悌3〇?36章)本書(shū)的最后一部分將介紹C#和.NET主題的其他技術(shù)。第30章將探討屬性,可以在程序集中包含類(lèi)型的其他信息,添加用其他方式很難實(shí)現(xiàn)的功能。第31章研究XML文檔說(shuō)明,并介紹如何在源代碼中給應(yīng)用程序添加注釋。我們將學(xué)習(xí)如何添加這些信息,如何使用和提取它們,從而從代碼中生成MSDN樣式的文檔說(shuō)明。第32章介紹網(wǎng)絡(luò),應(yīng)用程序如何相互通信,如何與各種網(wǎng)絡(luò)I?.的其他服務(wù)通信。第33章從本書(shū)前面學(xué)習(xí)的各種技術(shù)中解脫出來(lái),研究用GDI+進(jìn)行圖形編程的主題,理解如何操縱圖形,設(shè)定應(yīng)用程序的樣式,這一章打開(kāi)了一條通往各種C#應(yīng)用程序的大門(mén)。最后要討論.NETFramework最新版本中的幾個(gè)新技術(shù)。第34章介紹WindowsPresentationFoundation(WPF)?了解它給Windows和Web開(kāi)發(fā)帶來(lái)了哪些變化。第35章介紹WindowsCommunicationFoundationWCF),它把Web服務(wù)的槪念擴(kuò)展和改進(jìn)為?種企業(yè)級(jí)的通信技術(shù)。本書(shū)的最后一章是第36章:,介紹了WindowsWorkflowFoundation(WF),它允許在應(yīng)用程序中執(zhí)行エ作流功能,因此可以定義一些操作,這些操作由外部的交互操作控制,以特定的順序執(zhí)行,這對(duì)許多類(lèi)型的應(yīng)用程序都很有幫助。0.3使用本書(shū)的要求本書(shū)中C#和.NETFramework的代碼和描述都適用于.NET3.5。除了Framework之外,不需要其他東西就可以理解本書(shū)的這個(gè)方面,但許多示例都需要VisualC#Express2008作為主要開(kāi)發(fā)工具,ー些章節(jié)則使用了VisualWebDeveloperExpress20080另タト,ー些功能只能在VisualStudio2008中使用,這會(huì)在相應(yīng)的地方明確指出。0,4源代碼在讀者學(xué)習(xí)本書(shū)中的示例時(shí),可以手工輸入所有的代碼,也可以使用本書(shū)附帶的源代碼文件。本書(shū)使用的所有源代碼都可以從本書(shū)合作站點(diǎn)/或/downpage上下載。登錄到站點(diǎn)/,使用Search工具或使用書(shū)名列表就可以找到本書(shū)。接著單擊本書(shū)細(xì)目頁(yè)面上的DownloadCode鏈接,就可以獲得所有的源代碼。注釋:由于許多圖書(shū)的標(biāo)題都很類(lèi)似,所以按ISBN搜索是最簡(jiǎn)單的,本書(shū)英文版的ISBN是978?〇470-191354在下載了代碼后,只需用自己喜歡的解壓縮軟件對(duì)它進(jìn)行解壓縮即可。另外,也可以 進(jìn) 入/dynamic/books/download.aspx上的Wrox代碼下載主頁(yè),查看本書(shū)和其他Wrox圖書(shū)的所有代碼。0.5勘誤表盡管我們已經(jīng)盡了各種努力來(lái)保證文章或代碼中不出現(xiàn)錯(cuò)誤,但是錯(cuò)誤總是難免的,如果您在本書(shū)中找到了錯(cuò)誤,例如拼寫(xiě)錯(cuò)誤或代碼錯(cuò)誤,請(qǐng)告訴我們,我們將非常感激。通過(guò)勘誤表,可以讓其他讀者避免受挫,當(dāng)然,這還有助于提供更髙質(zhì)量的信息。請(qǐng)給wkservice@發(fā)電子郵件,我們就會(huì)檢查您的反饋信息,如果是正確的,我們將在本E的后續(xù)版本中采用。要在網(wǎng)站上找到本書(shū)英文版的勘誤表,可以登錄,通過(guò)Search工具或書(shū)名列表查找本書(shū),然后在本書(shū)的細(xì)目頁(yè)面上,單擊BookErrata鏈接。在這個(gè)頁(yè)面上.可以査看到Wrox編輯已提交和粘貼的所有勘誤項(xiàng)。完整的圖書(shū)列表還包括每本書(shū)的勘誤表,網(wǎng)址是/miscs/booklist.shtmL0.6P2P.WROX.COM要與作者和同行討論,請(qǐng)加入卜.的P2P論壇。這個(gè)論壇是ー個(gè)基于Web的系統(tǒng),便于您張貼與Wrox圖書(shū)相關(guān)的消息和相關(guān)技術(shù),與其他讀者和技術(shù)用戶(hù)交流心得。該論壇提供了訂閱功能,當(dāng)論壇上有新的消息時(shí),它可以給您傳送感興趣的論題。Wrox作者、編輯和其他業(yè)界專(zhuān)家和讀者都會(huì)到這個(gè)論壇上來(lái)探討問(wèn)題。在t,有許多不同的論壇,它們不僅有助于閱讀本書(shū),還有助于開(kāi)發(fā)自己的應(yīng)用程序。要加入論壇,可以遵循下面的步驟:(1)進(jìn)入?單擊Register鏈接。(2)閱讀使用協(xié)議,并單擊Agree按扭。(3)填寫(xiě)加入該論壇所需要的信息和自己希望提供的其他信息,單擊Submit按扭。(4)您會(huì)收到ー封電子郵件,其中的信息描述了如何驗(yàn)證賬戶(hù),完成加入過(guò)程。注釋:不加入P2P也可以閱讀論壇上的消息,但要張貼自己的消息,就必須加入該論壇.加入論壇后,就可以張貼新消息,響應(yīng)其他用戶(hù)張貼的消息。可以隨時(shí)在Web上閱讀消息。如果要止該網(wǎng)站給自己發(fā)送特定論壇中的消息,可以單擊論壇列表中該論壇名旁邊的SubseribetothisForum圖標(biāo)。關(guān)于使用WroxP2P的更多信息,可閱讀P2PFAQ,了解論壇軟件的工作情況以及P2P和Wrox圖書(shū)的許多常見(jiàn)問(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編寫(xiě)應(yīng)用程序 4什么是C# 7121用C#能編寫(xiě)什么樣的應(yīng)用程序 71.2.2本書(shū)中的C# 8VisualStudio2008 8VisualStudio2008Express產(chǎn)品 9解決方案 9\o"CurrentDocument"小結(jié) 9第2章編‘號(hào)C#程序 102」開(kāi)發(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)單類(lèi)型 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名稱(chēng)空間 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類(lèi)型轉(zhuǎn)換 72隱式轉(zhuǎn)換 72顯式轉(zhuǎn)換 74使用Convert命令進(jìn)行顯式轉(zhuǎn)換 76復(fù)雜的變量類(lèi)型 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í)例類(lèi)成員 152OOP技術(shù) 153接口 153繼承 155多態(tài)性 156對(duì)象之間的關(guān)系 157運(yùn)算符重載 159事件 159引用類(lèi)型和值,類(lèi)型 160Windows應(yīng)用程序中的OOP-160小結(jié) 162練習(xí) 163第9章 定義類(lèi) 164C#中的類(lèi)定義 164System,Object 169構(gòu)造函數(shù)和析構(gòu)函數(shù) 170VS和VCE中的OOP工具 174ClassView窗口 174對(duì)象瀏覽器 176添加類(lèi) 177類(lèi)圖 177類(lèi)庫(kù)項(xiàng)目 179接口和抽象類(lèi) 182結(jié)構(gòu)類(lèi)型 184小結(jié) 186練習(xí) 186第10章 定義類(lèi)成員 187成員定義 187定義字段 187定義方法 188定義屬性 189在類(lèi)圖中添加成員 194―制成員 196自動(dòng)屬性 197類(lèi)成員的其他議題 197隱藏基類(lèi)方法 198調(diào)用重:‘與或隱藏的基類(lèi)方法?…-199嵌套的類(lèi)型定義 200接口的實(shí)現(xiàn) 201部分類(lèi)定義 204部分方法定義 206示例應(yīng)用程序 207規(guī)劃應(yīng)用程序 207編寫(xiě)類(lèi)庫(kù) 208
類(lèi)庫(kù)的客戶(hù)應(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"類(lèi)型比較 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.!可空類(lèi)型 264.2System.Collections.Generic名稱(chēng)空間 271定義泛型 279定義泛型類(lèi) 280定義泛型接U 291定義泛型方法 291定義泛型委托 293小結(jié) 293練習(xí) 293第13章其他。OP技術(shù) 295::運(yùn)算符和全局名稱(chēng)空間定制異常 296」異?;?lèi) 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類(lèi)型推斷 323匿名類(lèi)型 325擴(kuò)展方法 328L表達(dá)式 333復(fù)習(xí)陪.名方法 333把入?達(dá)式用廣度表方法 334大表達(dá)式的參數(shù) 337表達(dá)式的語(yǔ)句體 337表達(dá)式用作委托和表達(dá)式樹(shù) 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)試用戶(hù)控件 420擴(kuò)展LabelTextbox 控件 421小結(jié) 424練習(xí) 424第17章使用通用對(duì)話(huà)框 425通用對(duì)話(huà)框 425如何使用對(duì)話(huà)框 426文件對(duì)話(huà)框 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)目類(lèi)型 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客戶(hù)端的狀態(tài)管理 513服務(wù)器端的狀態(tài)管理 515身份驗(yàn)證和授權(quán) 517身份驗(yàn)證的配置 518使用安全控件 522讀寫(xiě)SQLServer數(shù)據(jù)庫(kù) 524小結(jié) 530練習(xí) 531第20章 Web高級(jí)編程 532母版頁(yè) 532站點(diǎn)導(dǎo)航 537用戶(hù)控件 539個(gè)性化配置 5412041個(gè)性化配置組 543組件的個(gè)性化配置 543定制數(shù)據(jù)類(lèi)型中的個(gè)性化配置 5432044一一用戶(hù)的個(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圖書(shū)發(fā)布應(yīng)用程序 564客戶(hù)應(yīng)用程序的類(lèi)型 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ù) 客戶(hù)程序 創(chuàng)建簡(jiǎn)單的ASP.NETWeb服務(wù) 測(cè)試Web月艮務(wù) 執(zhí)行Windows客戶(hù)程序 異步調(diào)用服務(wù) 執(zhí)行ASP.NET客戶(hù)程序 傳送數(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ù)訪(fǎng)問(wèn)TOC\o"1-5"\h\z第24章文件系統(tǒng)數(shù)據(jù) 613流 613用于輸入和輸出的類(lèi) 614File類(lèi)和Directory類(lèi) 615Fileinfo類(lèi) 6162423 Directorylnfb類(lèi) 617路徑名和相對(duì)路徑 618FileStream對(duì)象 618StreamWriter對(duì)象 624StreamReader対象 626讀寫(xiě)壓縮文件 632丿予タリ化對(duì)象 635監(jiān)控文件結(jié)構(gòu) 639小結(jié) 645練習(xí) 646第25章 XML 647XML 文檔 647XML元素 647屬性 648XML聲明 649XML文檔的結(jié)構(gòu) 649XML名稱(chēng)空間 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查詢(xún) 673川vai?關(guān)鍵字聲明結(jié)果變量 675指定數(shù)據(jù)源:fh)m子句 675指定條件:where子句 675指定元素:select子句 676
完成:使用foreach循環(huán) 676延遲執(zhí)行的?詢(xún) 676\o"CurrentDocument"使用LINO方法語(yǔ)法和入表達(dá)式 676LINO擴(kuò)展方法 676—詢(xún)語(yǔ)法和方法語(yǔ)法 677表達(dá)式 677\o"CurrentDocument"排序查詢(xún)結(jié)果 679\o"CurrentDocument"orderbv/句 680\o"CurrentDocument"用方法語(yǔ)法排序 681\o"CurrentDocument"查詢(xún)大型數(shù)據(jù)集 682\o"CurrentDocument"合計(jì)運(yùn)算符 685\o"CurrentDocument"査詢(xún)笈雜的對(duì)象 688\o"CurrentDocument"投射:在査詢(xún)中創(chuàng)建新對(duì)象 691投射:方法語(yǔ)法 693單值選擇查詢(xún) 693\o"CurrentDocument"Any和AU 694\o"CurrentDocument"多級(jí)排序 696\o"CurrentDocument"多級(jí)排序方法語(yǔ)法:ThenBy 698\o"CurrentDocument"組合查詢(xún) 698\o"CurrentDocument"Take和Skip 700\o"CurrentDocument"First和FirstOrDefault 702\o"CurrentDocument"集運(yùn)算符 703\o"CurrentDocument"Join查詢(xún) 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查詢(xún) 712瀏覽LINOtoSOL關(guān)系 717進(jìn)一步探討LINOto SQL 720LIN。toSQL中的組合、排序和其他高級(jí)杳詢(xún) 723顯示生成的SOL 725用LINOtoSQL綁定數(shù)據(jù) 729用LIN。toSOL更新綁定數(shù)據(jù) 733小結(jié) 734練習(xí) 735第28章ADO.NET和LINQoverDataSet 736ADO.NET概述 736ADO.NET名稱(chēng)的來(lái)源 737ADO.NET的設(shè)計(jì)目標(biāo) 738ADO.NET類(lèi)和對(duì)象概述 739提供者對(duì)象 739用戶(hù)對(duì)象 740使-Svstem.Data名稱(chēng)空間??,?741用DataReader讀取數(shù)據(jù) 742用DataSet讀取數(shù)據(jù) 749用數(shù)據(jù)填充DataSet 749訪(fǎng)問(wèn)DataSet中的衣、行和列 749更新數(shù)據(jù)庫(kù) 752給數(shù)據(jù)庫(kù)添加行 755刪除行 761在DataSet屮訪(fǎng)問(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查詢(xún)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添加X(jué)ML文檔說(shuō)明 831XML文檔說(shuō)明的注擇 833使用類(lèi)圖添加X(jué)ML文檔說(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名稱(chēng)的解析 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類(lèi) 878對(duì)象的刪除 878坐標(biāo)系統(tǒng) 879顏色 884使用Pen類(lèi)繪制線(xiàn)條 885使用Brush類(lèi)繪制圖形 887使用Font類(lèi)繪制文本 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#開(kāi)發(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)畫(huà) 942靜態(tài)和動(dòng)態(tài)資源 944用WPF編程 949WPF川戶(hù)控件 950實(shí)現(xiàn)依賴(lài)屬性 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套裝軟件之類(lèi)的大型多功能的Windows應(yīng)用程序。應(yīng)用程序的用戶(hù)雖然看不到它們,但這些操作總是在后臺(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á)式及其用法在開(kāi)始之前,應(yīng)先了解一下C#編程的基本語(yǔ)法,因?yàn)槲覀冃枰粋€(gè)環(huán)境來(lái)學(xué)習(xí)使用C#語(yǔ)言中的變量和表達(dá)式。C#的基本語(yǔ)法C#代碼的外觀和操作方式與C++和Java非常類(lèi)似。初看起來(lái),其語(yǔ)法可能比較混亂,不像書(shū)面英語(yǔ)和其他語(yǔ)言。但是,在c#編程中,使用的樣式是比較清晰的,不用花太多的カ氣就可以編寫(xiě)出可讀性很強(qiáng)的代碼。與其他語(yǔ)言的編譯器不同,無(wú)論代碼中是否有空格、回車(chē)符或tab字符(這些字符統(tǒng)稱(chēng)為空白字符),C#編譯器都不考慮這些字符。這樣格式化代碼時(shí)就有很大的自由度,但遵循某些規(guī)則將有助于閱讀代碼。C#代碼由一系列語(yǔ)句組成,每個(gè)語(yǔ)句都用一個(gè)分號(hào)來(lái)結(jié)束。因?yàn)榭崭癖缓雎?,所以一行可以有多個(gè)語(yǔ)句,但從可讀性的角度來(lái)看,通常在分號(hào)的后面加上回車(chē)符,這樣就不能在一行上放置多個(gè)語(yǔ)句了。但一句代碼放在多個(gè)行上是可以的(也比較常見(jiàn))。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)樵诘?行的末尾沒(méi)有分號(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訪(fǎng)問(wèn)的VCEOptions對(duì)話(huà)框中,顯示了VCE用于格式化代碼的規(guī)則.在TextEditor|C#|Formatting節(jié)點(diǎn)的子目錄下,包含了完整的格式化規(guī)則。此處的大多數(shù)設(shè)置都反映了還沒(méi)有講述的C#部分,但如果以后要修改設(shè)置,以更適合自己的個(gè)性化樣式,就可以回過(guò)頭來(lái)看看這些設(shè)置。在本書(shū)中,為了簡(jiǎn)潔起見(jiàn),所有的代碼段都使用默認(rèn)設(shè)置來(lái)格式化。當(dāng)然,這種樣式并不是強(qiáng)制的。但如果不使用它,讀者在閱讀本書(shū)時(shí)會(huì)很快陷入迷茫之中。在C#代碼中,另ー個(gè)常見(jiàn)的語(yǔ)句是注釋。注釋并不是嚴(yán)格意義上的C#代碼,但代碼最好有注釋。注釋就是解釋?zhuān)唇o代碼添加描述性文本(用英語(yǔ)、法語(yǔ)、德語(yǔ)、外蒙古語(yǔ)等),編譯器會(huì)忽略這些內(nèi)容。在開(kāi)始處理比較長(zhǎng)的代碼段時(shí),注釋可用于給正在進(jìn)行的工作添加提示,例如“這行代碼要求用戶(hù)輸入ー個(gè)數(shù)字”,或“這段代碼由Bob編寫(xiě)"。C#添加注釋的方式有兩種。可以在注釋的開(kāi)頭和結(jié)尾放置標(biāo)記,也可以使用ー個(gè)標(biāo)記,其含義是“這行代碼的其余部分是注釋”。在C#編譯器忽略回車(chē)符的規(guī)則中,后者是ー個(gè)例外,但這是ー種特殊情況。要使用第一種方式標(biāo)記注釋,可以在注釋的開(kāi)頭加上在末尾加上“ッ”。這些注釋符號(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è)添加注釋的方法是用’ソ/”開(kāi)始ー個(gè)注釋?zhuān)谄浜罂梢跃帉?xiě)任何內(nèi)容,只要這些內(nèi)容在一行上即可。下面的語(yǔ)句是正確的://Thisisadifferentsortofcomment.但下面的語(yǔ)句會(huì)失敗,因?yàn)榈诙写a會(huì)解釋為C#代碼://Soisthis,butthisbitisn*t.這類(lèi)注釋可用于語(yǔ)句的說(shuō)明,因?yàn)樗鼈兌挤旁谝恍猩?<Astatement>; //Explanationofstatement前面說(shuō)過(guò)有兩種給C#代碼添加注釋的方法。但在C#中,還有第三類(lèi)注釋?zhuān)瑖?yán)格地說(shuō),這是〃語(yǔ)法的擴(kuò)展。它們都是單行注釋,用三個(gè)"/"符號(hào)來(lái)開(kāi)頭,而不是兩個(gè)。///Aspecialcomment在正常情況下,編譯器會(huì)忽略它們,就像其他注釋ー樣,但可以配置VS,在編譯項(xiàng)目時(shí),提取這些注釋后面的文本,創(chuàng)建一個(gè)特殊格式的文本文件,該文件可用于創(chuàng)建文檔說(shuō)明書(shū)。具體內(nèi)容見(jiàn)第31章。特別要注意的一點(diǎn)是,C#代碼是區(qū)分大小寫(xiě)的。與其他語(yǔ)言不同,必須使用正確的大小寫(xiě)形式輸入代碼,因?yàn)楹?jiǎn)單地用大寫(xiě)字母代替小寫(xiě)字母會(huì)中斷項(xiàng)目的編譯??纯聪旅孢@行代碼,它在第2章的第一個(gè)示例中使用:Console.WriteLine("ThefirstappinBeginningC#Programming!");C#編譯器能理解這行代碼,因?yàn)镃onsole.WriteLine。命令的大小寫(xiě)形式是正確的。但是,下面的語(yǔ)句都不能工作:console.WriteLine("ThefirstappinBeginningC#Programming!");CONSOLE.WRITELINE("ThefirstappinBeginningC#Programming!");Console.Writeline("ThefirstappinBeginningC#Programming!");這里使用的大小寫(xiě)形式是錯(cuò)誤的,所以C#編譯器不知道我們要做什么。幸好,VCE在代碼的輸入方面提供了許多幫助,在大多數(shù)情況下,它都知道(程序也知道)我們要做什么。在輸入代碼的過(guò)程中,VS會(huì)推薦用戶(hù)可能要使用的命令,并盡可能糾正大小寫(xiě)問(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)定義可以展開(kāi)和折疊的代碼區(qū)域的開(kāi)頭和結(jié)尾。例如,可以修改為ConsoleApplication!生成的代碼,如下所示:#regionUsingdirectivesusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;『endregion這樣就可以把這些代碼行折疊為一行,以后要查看其細(xì)節(jié)時(shí),可以再次展開(kāi)它。這里包含的using語(yǔ)句和其下的namespace語(yǔ)句將在本章的后面解釋。注釋:以#開(kāi)頭的任意關(guān)鍵字實(shí)際上都是ー個(gè)預(yù)處理指令,嚴(yán)格地說(shuō)并不是C#關(guān)鍵字.除了這里描述的#region和#endregion關(guān)鍵字之外,其他關(guān)鍵字都相當(dāng)復(fù)雜,用法也比較專(zhuān)業(yè).所以,這是ー個(gè)讀者通讀全書(shū)后才能探究的主題?,F(xiàn)在不必考慮示例中的其他代碼,因?yàn)楸緯?shū)前幾章僅解釋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)涵,稱(chēng)為類(lèi)型。下面再使用盒子來(lái)類(lèi)比,盒子有不同的形狀和尺寸,某些東西只能放在特定的盒子中。建立這個(gè)類(lèi)型系統(tǒng)的原因是,不同類(lèi)型的數(shù)據(jù)需要用不同的方法來(lái)處理。變量限定為不同的類(lèi)型,可以避免混淆它們。例如,組成數(shù)字圖片的0和1序列與組成聲音文件的0和1序列,其處理方式是不同的。要使用變量,需要聲明它們。即給變量指定名稱(chēng)和類(lèi)型。聲明了變量后,就可以把它們用作存儲(chǔ)單元,存儲(chǔ)聲明的數(shù)據(jù)類(lèi)型的數(shù)據(jù)。聲明變量的C#語(yǔ)法是,指定類(lèi)型和變量名,如下所示:<type><name>;如果使用未聲明的變量,代碼就不會(huì)編譯,但此時(shí)編譯器會(huì)告訴我們出現(xiàn)了什么問(wèn)題,所以這不是一個(gè)災(zāi)難性錯(cuò)誤。另外,使用未賦值的變量也會(huì)產(chǎn)生一個(gè)錯(cuò)誤,編譯器會(huì)檢測(cè)出這個(gè)錯(cuò)誤??梢允褂玫淖兞款?lèi)型是無(wú)限多的。其原因是可以自己定義類(lèi)型,存儲(chǔ)各種復(fù)雜的數(shù)據(jù)。盡管如此,總有一些數(shù)據(jù)類(lèi)型是每個(gè)人都要使用的,例如,存儲(chǔ)數(shù)值的變量。因此,我們應(yīng)了解ー些簡(jiǎn)單的預(yù)定義類(lèi)型。3.3.1簡(jiǎn)單類(lèi)型簡(jiǎn)單類(lèi)型就是組成應(yīng)用程序中基本組成部件的類(lèi)型,例如,數(shù)值和布爾值(true或回se)。簡(jiǎn)單類(lèi)型與復(fù)雜類(lèi)型不同,不能有子類(lèi)型或?qū)傩?。大多?shù)簡(jiǎn)單類(lèi)型都是存儲(chǔ)數(shù)值的,初看起來(lái)有點(diǎn)奇怪,肯定只需要一種類(lèi)型來(lái)存儲(chǔ)數(shù)值嗎?數(shù)值類(lèi)型過(guò)多的原因是在計(jì)算機(jī)內(nèi)存中,把數(shù)字作為一系列的。和1來(lái)存儲(chǔ)的機(jī)制。對(duì)于整數(shù)值,用一定的位(單個(gè)數(shù)字,可以是?;?)來(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ù)類(lèi)型可以用于存儲(chǔ)不同范圍的數(shù)值,占用不同的內(nèi)存空間(至多64位),這些類(lèi)型如表3-1所示。表3-1類(lèi)型另リ名允許的值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ù)注意:這些類(lèi)型中的每一種都利用了.NETFramework中定義的標(biāo)準(zhǔn)類(lèi)型.如第1章所述,使用標(biāo)準(zhǔn)類(lèi)型可以在語(yǔ)言之間交互操作。在C#中這些類(lèi)型的名稱(chēng)是Framework中定義的別名,表3-1列出了這些類(lèi)型在.NETFramework庫(kù)中的名稱(chēng).-ー些變量名稱(chēng)前面的“u”是unsigned的縮寫(xiě),表示不能在這些類(lèi)型的變量中存儲(chǔ)負(fù)號(hào),參見(jiàn)該表中的“允許的值”一列。當(dāng)然,還需要存儲(chǔ)浮點(diǎn)數(shù),它們不是整數(shù)??梢允褂玫母↑c(diǎn)數(shù)變量類(lèi)型有3種:float、double和decimaL前兩種可以用+/-mx2c的形式存儲(chǔ)浮點(diǎn)數(shù),m和e的值隨著類(lèi)型的不同而不同。Decimal使用另一種形式:+/-mxlび。這3種類(lèi)型、其m和e的值,以及它們?cè)趯?shí)數(shù)中的上下限如表3-2所示。類(lèi)型別名m的最小值m的最大值e的最小值e的最大值近似的最小值近似的最大值floatSystem.Singl5x10書(shū)3.4x1038doubleSystem.Doubl0x10-3241.7x1030KdecimalSystem.Decimal0296-2601.0x10287.9x102K除了數(shù)值類(lèi)型外,還有另外3種簡(jiǎn)單類(lèi)型,如表3-3所示。表3-3類(lèi)型另リ名允許的值charSystem.Char?個(gè)Unicode字符,存儲(chǔ)0-65535之間的整數(shù)boolSystem.Boolean布爾值:true或falsestringSystem.Stringー組字符注意組成string的字符數(shù)沒(méi)有上限,因?yàn)樗梢允褂每勺兇笮〉膬?nèi)存。布爾類(lèi)型bool是C#中最常用的ー種變量類(lèi)型,類(lèi)似的類(lèi)型在其他語(yǔ)言的代碼中非常豐富。當(dāng)編寫(xiě)應(yīng)用程序的邏輯流程時(shí),一個(gè)可以是true或面se的變量有非常重要的分支作用。例如,考慮一下有多少問(wèn)題可以用true或回se(或yes和no)來(lái)回答。執(zhí)行變量值之間的比較或檢査輸入的有效性就是后面使用布爾變量的兩個(gè)編程示例。介紹了這些類(lèi)型后,下面用一個(gè)小示例來(lái)聲明和使用它們。在下面的示例中,要使用一些簡(jiǎn)單的代碼來(lái)聲明兩個(gè)變量,給它們賦值,再輸出這些值。試試看:使用簡(jiǎn)單類(lèi)型的變量(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è)類(lèi)型為int的變量mylnteger,第二行聲明一個(gè)類(lèi)型為string的變量myStringo提示:變量的命名是有限制的,不能使用任意的字符序列。本節(jié)的后面將介紹變量的命名規(guī)則.接下來(lái)的兩行代碼給變量賦值:mylnteger=17;myString="\"mylnteger\"is";使用=賦值運(yùn)算符(在本章的“表達(dá)式”ー節(jié)中將詳細(xì)介紹)給變量分配兩個(gè)固定的值(在代碼中稱(chēng)為字面值)。把整數(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è)換行符,可以在字符串中使用回車(chē)換行符的轉(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)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年現(xiàn)代農(nóng)業(yè)園土地流轉(zhuǎn)承包合同3篇
- 藝術(shù)活動(dòng)特色課程設(shè)計(jì)
- 汽車(chē)租賃管理課程設(shè)計(jì)
- 湘繡美術(shù)課程設(shè)計(jì)
- 藝術(shù)課創(chuàng)意游戲課程設(shè)計(jì)
- 草藥烘焙課程設(shè)計(jì)
- 紙箱印刷工藝課程設(shè)計(jì)
- 職業(yè)主題運(yùn)動(dòng)課程設(shè)計(jì)
- 育子課程設(shè)計(jì)
- 糕點(diǎn)烘焙培訓(xùn)課程設(shè)計(jì)
- 廣東省廣州市越秀區(qū)2021-2022學(xué)年九年級(jí)上學(xué)期期末道德與法治試題(含答案)
- 安徽省森林撫育技術(shù)導(dǎo)則
- 在線(xiàn)教育平臺(tái)合作合同助力教育公平
- 工地鋼板短期出租合同模板
- 女排精神課件教學(xué)課件
- 2024年湖南省公務(wù)員考試《行測(cè)》真題及答案解析
- 超市消防安全巡查制度
- 《美洲》名師課件(第2課時(shí))
- GB/T 9445-2024無(wú)損檢測(cè)人員資格鑒定與認(rèn)證
- 超聲科危急值內(nèi)容及報(bào)告制度
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
評(píng)論
0/150
提交評(píng)論