版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
冃リ§C#是Microsoft在2000年7月推出.NETFramework的第1版時提供的ー種全新語言。C#的快速流行,使之成為使用.NETFramework的Windows和Web開發(fā)人員無可爭議的語言選擇。他們喜歡C#的ー個原因是其派生于C/C++的簡潔語法,這種語法簡化了以前困擾一些程序員的問題。盡管做了這些簡化,但C#仍廟了C++原來的功能,所以現(xiàn)在沒有理由不從C++轉(zhuǎn)向C#oC#語言并不難,也非常適合于學習基本編程技術(shù)。易于學習,再加上.NETFramework的功能,使C#成為開始您編程生涯的絕佳方式。C#的最新版本3.0是.NETFramework3.5的一部分,它建立在已有的成功基礎(chǔ)之上,還添加了一些更吸引人的功能。其中一些功能取自于C++(至少從表面上看是這樣),而另外一些功能是全新的。VisualStudio的最新版本和開發(fā)工具的Express系列也有許多變化和改進,這大大簡化了編程,顯著提高了效率。本書將全面介紹C#編程的所有知識,從該語言本身一直到Windows和Web編程,再到數(shù)據(jù)源的使用,最后是ー些高級技術(shù),例如,圖形編程。我們還將學習VisualC#Express2008ヽVisualWebDeveloperExpress2008和VisualStudio2008的功能和利用它進行應(yīng)用程序開發(fā)的各種方式。本書界面友好,闡述淸晰,每一章都以前面章節(jié)的內(nèi)容為基礎(chǔ),便于讀者掌握髙級技術(shù)。每個概念都會根據(jù)需要來介紹和討論,而不會突然冒出某個技術(shù)術(shù)語來妨礙讀者的閱讀和理解。本書盡量不使用技術(shù)術(shù)語,但如果需要,將根據(jù)上下文進行正確的定義和布置。本書的作者都是各自領(lǐng)域的專家,都是C#語言和.NETFramework的愛好者,沒有人比他們更有資格講授C#了,他們將在您掌握從基本規(guī)則到高級技術(shù)的過程中為您保駕護航。除了基礎(chǔ)知識之外,本書還有許多有益的提示、練習、完全成熟的示例代碼(可以從上下載),在您的職業(yè)生涯中一定會用到它們。本書將毫無保留地傳授這些知識,希望讀者能通過本書成為最優(yōu)秀的程序員。0.1本書讀者對象本書主要針對想學習如何使用.NETFramework編寫C#程序的所有人。本書前面的章節(jié)介紹該語言本身,讀者不需要具備任何編程經(jīng)驗。以前對其他語言有一定了解的開發(fā)人員,會覺得這些章節(jié)的內(nèi)容非常熟悉。C#語法的許多方面都與其他語言相同,許多結(jié)構(gòu)對所有的編程語言來說都是一樣的(例如,循環(huán)和分支結(jié)構(gòu))。但是,即使是有經(jīng)驗的程序員也可以從這些章節(jié)中獲益,理解這些技術(shù)應(yīng)用于C#的特征。如果讀者是編程新手,就應(yīng)從頭開始學習。如果讀者對.NETFramework比較陌生,但知道如何編程,就應(yīng)閱讀第1章,然后快速跳讀后面的幾章,這樣就能掌握C#語言的應(yīng)用方式了。如果讀者知道如何編程,但以前沒有接觸過面向?qū)ο蟮木幊陶Z言,就應(yīng)從第8章開始閱讀以后的章節(jié)。如果讀者對C#語言比較了解,就可以集中精力學習詳細論述最新.NETFramework和C#語言開發(fā)的章節(jié),尤其是集合、泛型和C#3.0語言的新增內(nèi)容(第11?14章),或者完全跳過本書的第I部分,從第15章開始學習。本書章節(jié)的編寫目的有兩個:這些章節(jié)可以按順序閱讀,是C#語言的一個完整教程。還可以按照需要深入學習這些章節(jié),將其作為一本參考資料。除了核心內(nèi)容之外,每一章還包含一組練習,完成這些練習有助于讀者理解所學習的內(nèi)容。練習包括簡單的選擇題、判斷題以及需要修改或建に應(yīng)用程序的較難問題。練習的答案在的本書Web頁面上在線提供。0.2本書結(jié)構(gòu)本書分為6個部分。引言:概述本書的內(nèi)容和作者。C#語言:介紹了C#語言的所有內(nèi)容,從基礎(chǔ)知識到面向?qū)ο蟮募夹g(shù),應(yīng)有盡有。Windows編程:介紹如何用C#編寫Windows應(yīng)用程序,如何部署它們。?Web編程:描述Web應(yīng)用程序的開發(fā)、Web服務(wù)和Web應(yīng)用程序的部署。?數(shù)據(jù)訪問:介紹在應(yīng)用程序中如何使用數(shù)據(jù),包括存儲在硬盤文件上的數(shù)據(jù)、以XML格式存儲的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)。?其他技術(shù):講述使用C#和.NETFramework的ー些額外方式,包括屬性、XML文檔說明、網(wǎng)絡(luò)和GDI+圖形編程。還探討了由.NET3.0引入且由.NET3.5改進的WPF、WCF和WF技術(shù)。下面介紹本書5個重要部分中的章節(jié)。0.2.1C#語言(第1?14章)第1章介紹C#以及它與.NET的關(guān)系,了解在這個環(huán)境下編程的基礎(chǔ)知識,以及VisualC#Express(VCE)和VS與它的關(guān)系。第2章開始介紹C#應(yīng)用程序開發(fā),學習C#的語法,并把C#和樣例命令行、Windows應(yīng)用程序結(jié)合起來使用。這些示例將說明C#如何快速輕松地啟動和運行,并附帶介紹VCE和VS開發(fā)環(huán)境以及本書將使用的基本窗口和工具。接著,第3章學習C#語言的更多基礎(chǔ)知識,理解變量的含義以及如何操縱它們。第4章將用流程控制(循環(huán)和分支)改進應(yīng)用程序的結(jié)構(gòu),第5章介紹一些高級的變量類型,如數(shù)組。第6章開始以函數(shù)的形式封裝代碼,這樣就更易于執(zhí)行重復的操作,代碼更容易理解。從第7章開始將運用C#語言的基礎(chǔ)知識,調(diào)試應(yīng)用程序,這包括在運行應(yīng)用程序時輸出跟蹤信息,使用VS查找錯誤,在強大的調(diào)試環(huán)境中找出解決問題的辦法。第8章將學習面向?qū)ο缶幊蹋∣bject-OrientedProgramming,OOP)〇苜先了解這個術(shù)語的含義,回答“什么是對象?”。這個OOP初看起來是比較難的問題。我們將用整整一章的篇幅來介紹它,解釋對象的強大之處。直到木章的最后オ會使用C#代碼。第9章將理論應(yīng)用于實踐,開始在C#應(yīng)用程序中使用OOP時,一切都會發(fā)生變化,而這正是C#的強大之處。第10章首先介紹如何定義類和接口,然后探討類成員(包括字段、屬性和方法),在這一章的最后將開始創(chuàng)建一個撲克牌游戲應(yīng)用程序,這個應(yīng)用程序?qū)⒃趲渍轮虚_發(fā)完成,它非常有助于理解OOP。學習了OOP在C#中的工作原理后,第11章將介紹幾種常見的OOP場景,包括處理對象集合、比較和轉(zhuǎn)換對象。第!2章討論.NET2.0中C#的ー個非常有用的新特性——泛型,利用它可以創(chuàng)建非常靈活的類。第13章通過ー些其他技術(shù)和事件(它在Windows編程中非常重要)完成C#語言和OOP的討論。最后,第14章介紹C#3.0中引入的新特性。0.2.2Windows編程(第15-18章)第15章開始介紹Windows編程的概念,理解在VCE和VS中如何實現(xiàn)Windows編程。這一章也是從基礎(chǔ)知識開始介紹,并構(gòu)建知識體系。第16章學習如何在應(yīng)用程序中使用.NETFramework提供的各種控件。我們將簡要論述.NET如何以圖形化的方式建立Windows應(yīng)用程序,以最少的時間和精力創(chuàng)建高級應(yīng)用程序。第17章介紹ー些常用的功能。利用這些功能可以方便地添加專業(yè)功能,例如,文件管理、打印等。第!8章討論應(yīng)用程序的部署,包括建立安裝程序,以便用戶快速安裝和運行應(yīng)用程序。0.2.3Web編程(第19?23章)這個部分的結(jié)構(gòu)與Windows編程部分類似。首先,第!9章描述了構(gòu)成最簡單的Web應(yīng)用程序的控件,如何把它們組合在一起,讓它們使用ASP.NET執(zhí)行任務(wù)。第20章以此為基礎(chǔ),介紹了更高級的技術(shù)、各種控件、Web環(huán)境下的狀態(tài)管理,以及Web標準的遵循。第2I章將涉足Web服務(wù)的精彩世界,它可以編程訪問Internet上的信息和功能,可以把復雜的數(shù)據(jù)和功能以獨立于平臺的方式嵌入Web和Windows應(yīng)用程序。這ー章討論如何使用和創(chuàng)建Web服務(wù),以及.NET提供的其他工具,如安全性。第22章便3Ajax編程,這種方式可以給Web應(yīng)用程序添加動態(tài)的客戶端功能。.NETFramework3.5通過ASP.NETAjax提供了Ajax功能,本章會解釋如何使用它。最后,第23章探討Web應(yīng)用程序和服務(wù)的部署,尤其是可以通過單擊按鈕把應(yīng)用程序發(fā)布到Web上的VS和VWD新特性。0.2.4數(shù)據(jù)訪問(第24?29章)第24章介紹了應(yīng)用程序如何保存和檢索磁盤上的數(shù)據(jù),作為簡單的文本文件或者更復雜的數(shù)據(jù)表示方式。這一章還將討論如何壓縮數(shù)據(jù),如何操縱舊數(shù)據(jù)(例如,用逗號隔開的值(CSV)文件),如何監(jiān)視和處理文件系統(tǒng)的變化。第25章學習數(shù)據(jù)交換的事實標準XML。前面的章節(jié)接觸過XML幾次,而這一章將了解XML的基本規(guī)則,論述XML的所有功能。本部分的其余章節(jié)介紹LINQ,這是內(nèi)置于.NETFramework最新版本中的查詢語言。第26章簡要介紹L1NQ,第27章使用LINQ訪問數(shù)據(jù)庫中的數(shù)據(jù)。第28章介紹如何聯(lián)合使用LINQ和舊的ADO.NET數(shù)據(jù)訪問技術(shù)。最后,第29章學習如何使用LINQ處理XML數(shù)據(jù)。0.2.5其他技術(shù)悌3〇?36章)本書的最后一部分將介紹C#和.NET主題的其他技術(shù)。第30章將探討屬性,可以在程序集中包含類型的其他信息,添加用其他方式很難實現(xiàn)的功能。第31章研究XML文檔說明,并介紹如何在源代碼中給應(yīng)用程序添加注釋。我們將學習如何添加這些信息,如何使用和提取它們,從而從代碼中生成MSDN樣式的文檔說明。第32章介紹網(wǎng)絡(luò),應(yīng)用程序如何相互通信,如何與各種網(wǎng)絡(luò)I?.的其他服務(wù)通信。第33章從本書前面學習的各種技術(shù)中解脫出來,研究用GDI+進行圖形編程的主題,理解如何操縱圖形,設(shè)定應(yīng)用程序的樣式,這一章打開了一條通往各種C#應(yīng)用程序的大門。最后要討論.NETFramework最新版本中的幾個新技術(shù)。第34章介紹WindowsPresentationFoundation(WPF)?了解它給Windows和Web開發(fā)帶來了哪些變化。第35章介紹WindowsCommunicationFoundationWCF),它把Web服務(wù)的槪念擴展和改進為?種企業(yè)級的通信技術(shù)。本書的最后一章是第36章:,介紹了WindowsWorkflowFoundation(WF),它允許在應(yīng)用程序中執(zhí)行エ作流功能,因此可以定義一些操作,這些操作由外部的交互操作控制,以特定的順序執(zhí)行,這對許多類型的應(yīng)用程序都很有幫助。0.3使用本書的要求本書中C#和.NETFramework的代碼和描述都適用于.NET3.5。除了Framework之外,不需要其他東西就可以理解本書的這個方面,但許多示例都需要VisualC#Express2008作為主要開發(fā)工具,ー些章節(jié)則使用了VisualWebDeveloperExpress20080另タト,ー些功能只能在VisualStudio2008中使用,這會在相應(yīng)的地方明確指出。0,4源代碼在讀者學習本書中的示例時,可以手工輸入所有的代碼,也可以使用本書附帶的源代碼文件。本書使用的所有源代碼都可以從本書合作站點/或/downpage上下載。登錄到站點/,使用Search工具或使用書名列表就可以找到本書。接著單擊本書細目頁面上的DownloadCode鏈接,就可以獲得所有的源代碼。注釋:由于許多圖書的標題都很類似,所以按ISBN搜索是最簡單的,本書英文版的ISBN是978?〇470-191354在下載了代碼后,只需用自己喜歡的解壓縮軟件對它進行解壓縮即可。另外,也可以 進 入/dynamic/books/download.aspx上的Wrox代碼下載主頁,查看本書和其他Wrox圖書的所有代碼。0.5勘誤表盡管我們已經(jīng)盡了各種努力來保證文章或代碼中不出現(xiàn)錯誤,但是錯誤總是難免的,如果您在本書中找到了錯誤,例如拼寫錯誤或代碼錯誤,請告訴我們,我們將非常感激。通過勘誤表,可以讓其他讀者避免受挫,當然,這還有助于提供更髙質(zhì)量的信息。請給wkservice@發(fā)電子郵件,我們就會檢查您的反饋信息,如果是正確的,我們將在本E的后續(xù)版本中采用。要在網(wǎng)站上找到本書英文版的勘誤表,可以登錄,通過Search工具或書名列表查找本書,然后在本書的細目頁面上,單擊BookErrata鏈接。在這個頁面上.可以査看到Wrox編輯已提交和粘貼的所有勘誤項。完整的圖書列表還包括每本書的勘誤表,網(wǎng)址是/miscs/booklist.shtmL0.6P2P.WROX.COM要與作者和同行討論,請加入卜.的P2P論壇。這個論壇是ー個基于Web的系統(tǒng),便于您張貼與Wrox圖書相關(guān)的消息和相關(guān)技術(shù),與其他讀者和技術(shù)用戶交流心得。該論壇提供了訂閱功能,當論壇上有新的消息時,它可以給您傳送感興趣的論題。Wrox作者、編輯和其他業(yè)界專家和讀者都會到這個論壇上來探討問題。在t,有許多不同的論壇,它們不僅有助于閱讀本書,還有助于開發(fā)自己的應(yīng)用程序。要加入論壇,可以遵循下面的步驟:(1)進入?單擊Register鏈接。(2)閱讀使用協(xié)議,并單擊Agree按扭。(3)填寫加入該論壇所需要的信息和自己希望提供的其他信息,單擊Submit按扭。(4)您會收到ー封電子郵件,其中的信息描述了如何驗證賬戶,完成加入過程。注釋:不加入P2P也可以閱讀論壇上的消息,但要張貼自己的消息,就必須加入該論壇.加入論壇后,就可以張貼新消息,響應(yīng)其他用戶張貼的消息??梢噪S時在Web上閱讀消息。如果要止該網(wǎng)站給自己發(fā)送特定論壇中的消息,可以單擊論壇列表中該論壇名旁邊的SubseribetothisForum圖標。關(guān)于使用WroxP2P的更多信息,可閱讀P2PFAQ,了解論壇軟件的工作情況以及P2P和Wrox圖書的許多常見問題。要閱讀FAQ,可以在任意P2P頁面上單擊FAQ鏈接。目錄第I部分C#語言TOC\o"1-5"\h\z第1章C#簡介 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章編‘號C#程序 102」開發(fā)環(huán)境 10VisualStudio2008 11VisualC#2008ExpressEdition 13控制臺應(yīng)用程序 13SolutionExplorer 16Properties窗LI 17ErrorList窗口 17WindowsForms應(yīng)用程序 18小結(jié) 22第3章 變量和表達式 23\o"CurrentDocument"C#的基本語法 23C#控制臺應(yīng)用程序的基本\o"CurrentDocument"結(jié)構(gòu) 25\o"CurrentDocument"變量 27331簡單類型 27\o"CurrentDocument"變量的命名 31字面值 32\o"CurrentDocument"變量的聲明和賦值 33\o"CurrentDocument"表達式 34\o"CurrentDocument"數(shù)學運算符 34賦值運算符 38\o"CurrentDocument"運算符的優(yōu)先級 39名稱空間 39\o"CurrentDocument"小結(jié) 42\o"CurrentDocument"練習 43第4章流程控制 44\o"CurrentDocument"布爾邏輯 44\o"CurrentDocument"位運算符 46\o"CurrentDocument"-爾賦值運算符 50運算符的優(yōu)先級更新 51\o"CurrentDocument"goto語句 52\o"CurrentDocument"分支 53\o"CurrentDocument"431三元運算符 53\o"CurrentDocument"if語句 54\o"CurrentDocument"switch語句 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"無限循環(huán) 70小結(jié) 70\o"CurrentDocument"練習 71第5章變量的更多內(nèi)容 72類型轉(zhuǎn)換 72隱式轉(zhuǎn)換 72顯式轉(zhuǎn)換 74使用Convert命令進行顯式轉(zhuǎn)換 76復雜的變量類型 79枚舉 79結(jié)構(gòu) 83數(shù)組 86
字符串的處理 91\o"CurrentDocument"小結(jié) 95\o"CurrentDocument"練習 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練習 120第7章 調(diào)試和錯誤處理 121VS和VCE中的調(diào)試 121非中斷(正常)模式下的調(diào)試.…122中斷模式ド的調(diào)試 131錯誤處理 139try-catch…finallv 140722列出和配置異常 144異常處理的注意事項 145小結(jié) 146練習 146第8章 面向?qū)ο缶幊毯喗?147什么是面向?qū)ο缶幊?147」什么是對象 148.2所有的東西都是對象 151對象的生命周期 1514靜態(tài)和實例類成員 152OOP技術(shù) 153接口 153繼承 155多態(tài)性 156對象之間的關(guān)系 157運算符重載 159事件 159引用類型和值,類型 160Windows應(yīng)用程序中的OOP-160小結(jié) 162練習 163第9章 定義類 164C#中的類定義 164System,Object 169構(gòu)造函數(shù)和析構(gòu)函數(shù) 170VS和VCE中的OOP工具 174ClassView窗口 174對象瀏覽器 176添加類 177類圖 177類庫項目 179接口和抽象類 182結(jié)構(gòu)類型 184小結(jié) 186練習 186第10章 定義類成員 187成員定義 187定義字段 187定義方法 188定義屬性 189在類圖中添加成員 194―制成員 196自動屬性 197類成員的其他議題 197隱藏基類方法 198調(diào)用重:‘與或隱藏的基類方法?…-199嵌套的類型定義 200接口的實現(xiàn) 201部分類定義 204部分方法定義 206示例應(yīng)用程序 207規(guī)劃應(yīng)用程序 207編寫類庫 208
類庫的客戶應(yīng)用程序 21410.フ 小結(jié) 21510.8 練習 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深度復制 2368 給CardLib添加深度復制……238\o"CurrentDocument"比較 239\o"CurrentDocument"類型比較 240\o"CurrentDocument"值比較 244\o"CurrentDocument"轉(zhuǎn)換 259\o"CurrentDocument"重載轉(zhuǎn)換運算符 259\o"CurrentDocument"as運算符 260小結(jié) 261\o"CurrentDocument"練刁 262笫12章泛型 263泛型的概念 263使用泛型 264.!可空類型 264.2System.Collections.Generic名稱空間 271定義泛型 279定義泛型類 280定義泛型接U 291定義泛型方法 291定義泛型委托 293小結(jié) 293練習 293第13章其他。OP技術(shù) 295::運算符和全局名稱空間定制異常 296」異?;?297.2 給CardLib添加定制異常 297事件 298什么是事件 298使用事件 300定義密件 302擴展和使用CardLib 309小結(jié) 317練習 317第14章 C#3.0語言的改進 318初始化器 318對象初始化器 319集合?初始化器 320類型推斷 323匿名類型 325擴展方法 328L表達式 333復習陪.名方法 333把入?達式用廣度表方法 334大表達式的參數(shù) 337表達式的語句體 337表達式用作委托和表達式樹 338表達式和集合 339小結(jié) 342練習 342第II部分Windows編程\o"CurrentDocument"第15章 Windows編程基礎(chǔ) 347\o"CurrentDocument"控件 347\o"CurrentDocument"屬性 348控件的定位、??亢蛯R????-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"練習 392第16章 WindowsForms的高級功能…393菜單和工具欄 393兩個實質(zhì)ー樣的控件 39316丄2使用MemiSt而控件 39416丄3手工創(chuàng)建菜單 394ToolStriDMenuItem控件的其他屬性 397給菜單添加功能 397工具欄 399ToolStri口控件的屬性 3991622 ToolSlrb的項 400StatusStri口控件 4051624 StalHStripStatusLabel的屬性 405SDI和MDI應(yīng)用程序 407創(chuàng)建控件 415LabelTextbox控件 4171642調(diào)試用戶控件 420擴展LabelTextbox 控件 421小結(jié) 424練習 424第17章使用通用對話框 425通用對話框 425如何使用對話框 426文件對話框 4270口enFileDialog 427SaveFileDialog ”… 438打印 442打印結(jié)構(gòu) 4421742打印多個頁面 4471743 PageSetupDialogr 4491744 PrintDialog 451打印預(yù)覽 4551751 PrintPreviewDialog 45517.5.2 PrintPreviewControI 456FontDialogネロColorDialog 457FontDialog 4571762 ColorDialog 4591763 FolderBrowserDialog 460小結(jié) 461練習 461第18章 部署Windows應(yīng)用程序 463部署概述 463ClickOnce部署 464VisualStudio安裝和部署項目類型 473MicrosoftWindows安裝程序結(jié)構(gòu) 474
WindowsInstaller術(shù)語 474WindowsInstaller的優(yōu)點 476為SimpleEditor創(chuàng)建安裝軟件包 476規(guī)劃安裝內(nèi)容 476倉リ建項目 477項目屬性 478安裝編輯卷 4801855 FileSystem編輯器 481FileTypes編輯瑞 483&5.7 LaunchCondition編輯器 485UserInle命ce編輯器 485構(gòu)建項目 488安裝 489Welcome 4891872 ReadMe 489LicenseAgreement 4901874 OptionalFiles 490選擇安裝文件夾 491確認安裝 492進度 492結(jié)束安裝 493運行應(yīng)用程序 493卸載 493小結(jié) 493練習 494第山部分Web編程第19章Web編程基礎(chǔ) 49719」概述 497ASP.NET運行庫 498創(chuàng)建簡單的Web頁面 498服務(wù)器控件 504事件處理程序 505輸入的有效性驗證 509狀態(tài)管理 512客戶端的狀態(tài)管理 513服務(wù)器端的狀態(tài)管理 515身份驗證和授權(quán) 517身份驗證的配置 518使用安全控件 522讀寫SQLServer數(shù)據(jù)庫 524小結(jié) 530練習 531第20章 Web高級編程 532母版頁 532站點導航 537用戶控件 539個性化配置 5412041個性化配置組 543組件的個性化配置 543定制數(shù)據(jù)類型中的個性化配置 5432044一一用戶的個性化配置 544WebParts 545/WebPartManaget?控件 5462052WebPartZone控件 546.3EditorZone控件 5482054CatalogZone控件 5502055ConnectionsZone控件 551JavaScript 554Scrim元素 5552062變量的聲明 5552063定義函數(shù) 5552064語句 5562065對象 556小結(jié) 560練習 560第21章 Web服務(wù) 561Web服務(wù)推出之前 561遠程過程調(diào)用(RPC) 562SOAP 563使用Web服務(wù)的場合 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基本個性化配置 Web服務(wù)和.NETFramework 創(chuàng)建Web服務(wù) 客戶程序 創(chuàng)建簡單的ASP.NETWeb服務(wù) 測試Web月艮務(wù) 執(zhí)行Windows客戶程序 異步調(diào)用服務(wù) 執(zhí)行ASP.NET客戶程序 傳送數(shù)據(jù) 小結(jié) 練習 第22章Aiax編程 Aiax概述 UpdatePanel控件 Timer控件 UpdateProgress控件 Web服務(wù) _度 小結(jié) 練習 第23章部署Web應(yīng)用程序 InternetInformat沁nServices??…HS配置 復制Web站點 發(fā)布Web站點 Windows安裝程序 創(chuàng)建安裝程序 安裝Web應(yīng)用程序 小結(jié) 練習 第!V部分數(shù)據(jù)訪問TOC\o"1-5"\h\z第24章文件系統(tǒng)數(shù)據(jù) 613流 613用于輸入和輸出的類 614File類和Directory類 615Fileinfo類 6162423 Directorylnfb類 617路徑名和相對路徑 618FileStream對象 618StreamWriter對象 624StreamReader対象 626讀寫壓縮文件 632丿予タリ化對象 635監(jiān)控文件結(jié)構(gòu) 639小結(jié) 645練習 646第25章 XML 647XML 文檔 647XML元素 647屬性 648XML聲明 649XML文檔的結(jié)構(gòu) 649XML名稱空間 650格式良好并冇效的XML 651驗證XML文檔 651在應(yīng)用程序中使用XML 654XML文檔對象模型 655選擇節(jié)點 663小結(jié) 670練習 671第26章LINQ簡介 672\o"CurrentDocument"LINO 的變體 673\o"CurrentDocument"第?個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方法語法和入表達式 676LINO擴展方法 676—詢語法和方法語法 677表達式 677\o"CurrentDocument"排序查詢結(jié)果 679\o"CurrentDocument"orderbv/句 680\o"CurrentDocument"用方法語法排序 681\o"CurrentDocument"查詢大型數(shù)據(jù)集 682\o"CurrentDocument"合計運算符 685\o"CurrentDocument"査詢笈雜的對象 688\o"CurrentDocument"投射:在査詢中創(chuàng)建新對象 691投射:方法語法 693單值選擇查詢 693\o"CurrentDocument"Any和AU 694\o"CurrentDocument"多級排序 696\o"CurrentDocument"多級排序方法語法:ThenBy 698\o"CurrentDocument"組合查詢 698\o"CurrentDocument"Take和Skip 700\o"CurrentDocument"First和FirstOrDefault 702\o"CurrentDocument"集運算符 703\o"CurrentDocument"Join查詢 706資源和進一?步閱讀 707\o"CurrentDocument"小結(jié) 707\o"CurrentDocument"練習 707第27章LINQto SQL 709對象相關(guān)映射 709安裝SQLServer和Northwind示例數(shù)據(jù) 710安裝SOLServerExpress2005 710安裝Northwind示例數(shù)據(jù)庫 711第?個LINOtoSOL查詢 712瀏覽LINOtoSOL關(guān)系 717進一步探討LINOto SQL 720LIN。toSQL中的組合、排序和其他高級杳詢 723顯示生成的SOL 725用LINOtoSQL綁定數(shù)據(jù) 729用LIN。toSOL更新綁定數(shù)據(jù) 733小結(jié) 734練習 735第28章ADO.NET和LINQoverDataSet 736ADO.NET概述 736ADO.NET名稱的來源 737ADO.NET的設(shè)計目標 738ADO.NET類和對象概述 739提供者對象 739用戶對象 740使-Svstem.Data名稱空間??,?741用DataReader讀取數(shù)據(jù) 742用DataSet讀取數(shù)據(jù) 749用數(shù)據(jù)填充DataSet 749訪問DataSet中的衣、行和列 749更新數(shù)據(jù)庫 752給數(shù)據(jù)庫添加行 755刪除行 761在DataSet屮訪問多個表 762ADO.NET中的關(guān)系 762用關(guān)系導航 763XML和ADO.NET 770ADO.NET中的SOL支持 773DataAdapter對象中的SOL命令 773白:接執(zhí)行SOL命令 776調(diào)用SQL存儲過程 778使用LINOoverDataSet和ADO.NET 780小結(jié) 784
練習 784第29?章:LINQtoXML 78529」LINOtoXML函數(shù)構(gòu)造方法?…785保存和加載XML文檔 7892.1從一符串中加載XML 791已,保存:的XML文檔內(nèi)容?……792處理XML片段 792通過LINOtoXML生成XML 794查詢XML文檔 798小結(jié) 804練習 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文檔說明 831添加XML文檔說明 831XML文檔說明的注擇 833使用類圖添加XML文檔說明 839生成XML文檔說明文件 842帶有XML文檔說明的應(yīng)川程序示例 844使用XML文檔說明 846編程處理XML文檔說明?……846用XSLT格式化XML文檔說明 848文檔說明工具 849小結(jié) 850練習 851第32章網(wǎng)絡(luò) 852聯(lián)網(wǎng)概述 852名稱的解析 855統(tǒng)ー資源標識符 856TCP和UDP 857應(yīng)用協(xié)議 857網(wǎng)絡(luò)編程選項 859WebClient 859WcbRequest和WcbRcsponse--861TcpListener和TcpClient 868小結(jié) 876練習 876第33_章 GDI+簡介 877圖形繪制概述 877Graphics類 878對象的刪除 878坐標系統(tǒng) 879顏色 884使用Pen類繪制線條 885使用Brush類繪制圖形 887使用Font類繪制文本 890使用圖像進行繪制 8933351使用紋理阿?繪圖 895使用鋼筆繪制圖像 897雙倍緩沖 898GDI+的高級功能 900剪切 900Systcm.Drawing.Drawing2D…,901
TOC\o"1-5"\h\zSystem.Drawing.Imaging 90133.フ 小結(jié) 90133.8 練習 902第34章:WindowsPresentationFoundation 903WPF的概念 904WPF給設(shè)計人員帶來的好處 904WPF給C#開發(fā)人員帶來的好處 906基本W(wǎng)PF應(yīng)用程序的組成 906WPF 基礎(chǔ) 916XAML語法 917桌面和Web應(yīng)用程序 919Application對象 920控件基 920控件的布局 928控件的樣式 936觸發(fā)器 941動畫 942靜態(tài)和動態(tài)資源 944用WPF編程 949WPF川戶控件 950實現(xiàn)依賴屬性 950小結(jié) 959練習 960第35覃: WindowsCommunication\o"CurrentDocument"Foundation 961\o"CurrentDocument"WCF 是什么 961\o"CurrentDocument"WCF 概念 962WCF通信協(xié)議 9623522 地址、端點和綁定 963合同 9643524消息模式 965行為 965主機 965\o"CurrentDocument"WCF 編程 9663531定義WCF服務(wù)合同 97335.3.2自存儲的WCF服務(wù) 979小結(jié) 985練習 986第36章 Windows WorkflowFoundation 987活動 990DelayAclivity 990SuspendActivity 991WhileAclivily 992SequenceActivity 994定制活動 997工作流運行庫 1002數(shù)據(jù)綁 1007小結(jié) 1010變量和表達式要想高效地學習C#的用法,重要的是理解創(chuàng)建計算機程序時需要做什么。計算機程序最基本的描述也許是ー系列處理數(shù)據(jù)的操作,即使是最復雜的示例,這個論述也正確,例如,MicrosoftOffice套裝軟件之類的大型多功能的Windows應(yīng)用程序。應(yīng)用程序的用戶雖然看不到它們,但這些操作總是在后臺進行。為了進ー步解釋它,考慮ー下計算機的顯示單元。我們常常比較熟悉屏幕上的內(nèi)容,很難不把它想像為“移動的圖片”。但實際上,我們看到的僅是ー些數(shù)據(jù)的顯示結(jié)果,其最初的形式是存儲在計算機內(nèi)存中的。和1數(shù)據(jù)流。因此我們在屏幕上進行的任何操作,無論是移動鼠標指針,單擊圖標,或在字處理器上輸入文本,都會改變內(nèi)存中的數(shù)據(jù)。當然,還可以利用一些較簡單的情形來說明這一點。如果使用計算器應(yīng)用程序,就要提供數(shù)字,對這些數(shù)字執(zhí)行操作,就像用紙和筆計算數(shù)字ー樣,但使用程序會快得多。如果計算機程序是在對數(shù)據(jù)執(zhí)行操作,則說明我們需要以某種方式來存儲數(shù)據(jù),需要某些方法來處理它們。這兩種功能是由變量和表達式提供的,本章將探究它們的含義。本章的主要內(nèi)容:C#的基本語法變量及其用法表達式及其用法在開始之前,應(yīng)先了解一下C#編程的基本語法,因為我們需要一個環(huán)境來學習使用C#語言中的變量和表達式。C#的基本語法C#代碼的外觀和操作方式與C++和Java非常類似。初看起來,其語法可能比較混亂,不像書面英語和其他語言。但是,在c#編程中,使用的樣式是比較清晰的,不用花太多的カ氣就可以編寫出可讀性很強的代碼。與其他語言的編譯器不同,無論代碼中是否有空格、回車符或tab字符(這些字符統(tǒng)稱為空白字符),C#編譯器都不考慮這些字符。這樣格式化代碼時就有很大的自由度,但遵循某些規(guī)則將有助于閱讀代碼。C#代碼由一系列語句組成,每個語句都用一個分號來結(jié)束。因為空格被忽略,所以一行可以有多個語句,但從可讀性的角度來看,通常在分號的后面加上回車符,這樣就不能在一行上放置多個語句了。但一句代碼放在多個行上是可以的(也比較常見)。C#是?種塊結(jié)構(gòu)的語言,所有的語句都是代碼塊的一部分。這些塊用花括號來界定(”ド和"}"),代碼塊可以包含任意多行語句,或者根本不包含語句。注意花括號字符不需要附帶分號。所以,簡單的C#代碼塊如下所示:(<codeline1,statement1>;<codeline2,statement2><codeline3,statement2>;}其中〈codelinex,statementy>部分并不是真正的C#代碼,而是用這個文本作為C#語句的占位符。在這段代碼中,第2、3行代碼是同一個語句的一部分,因為在第2行的末尾沒有分號。在這個簡單的代碼塊中,還使用了縮進格式,使C#代碼的可讀性更高。這是ー個標準規(guī)則,實際上在默認情況下VS會自動縮進代碼。一般情況下,每個代碼塊都有自己的縮進級別,即它向右縮進了多少。代碼塊可以互相嵌套(即塊中可以包含其他塊),而被嵌套的塊要縮進得多一些。(<codeline1>;(<codeline2>;<codeline3>;}<codeline4>;}前面代碼的續(xù)行通常也要縮進得多一些,如上面第一個示例中的第3行代碼所示。注釋:在能通過Tools|Options訪問的VCEOptions對話框中,顯示了VCE用于格式化代碼的規(guī)則.在TextEditor|C#|Formatting節(jié)點的子目錄下,包含了完整的格式化規(guī)則。此處的大多數(shù)設(shè)置都反映了還沒有講述的C#部分,但如果以后要修改設(shè)置,以更適合自己的個性化樣式,就可以回過頭來看看這些設(shè)置。在本書中,為了簡潔起見,所有的代碼段都使用默認設(shè)置來格式化。當然,這種樣式并不是強制的。但如果不使用它,讀者在閱讀本書時會很快陷入迷茫之中。在C#代碼中,另ー個常見的語句是注釋。注釋并不是嚴格意義上的C#代碼,但代碼最好有注釋。注釋就是解釋,即給代碼添加描述性文本(用英語、法語、德語、外蒙古語等),編譯器會忽略這些內(nèi)容。在開始處理比較長的代碼段時,注釋可用于給正在進行的工作添加提示,例如“這行代碼要求用戶輸入ー個數(shù)字”,或“這段代碼由Bob編寫"。C#添加注釋的方式有兩種。可以在注釋的開頭和結(jié)尾放置標記,也可以使用ー個標記,其含義是“這行代碼的其余部分是注釋”。在C#編譯器忽略回車符的規(guī)則中,后者是ー個例外,但這是ー種特殊情況。要使用第一種方式標記注釋,可以在注釋的開頭加上在末尾加上“ッ”。這些注釋符號可以在單獨一行上,也可以在不同的行上,注釋符號之間的所有內(nèi)容都是注釋。注釋中唯一不能輸入的是因為它會被看作注釋結(jié)束標記。所以下面的語句是正確的。/*Thisisacomment*//*Andsoisthis!*/但下面的語句會產(chǎn)生錯誤:/*Commentsoftenendwith"*/"characters*/注釋結(jié)束符號后的內(nèi)容("*/"后面的字符)會被當作C#代碼,因此產(chǎn)生錯誤。另ー個添加注釋的方法是用’ソ/”開始ー個注釋,在其后可以編寫任何內(nèi)容,只要這些內(nèi)容在一行上即可。下面的語句是正確的://Thisisadifferentsortofcomment.但下面的語句會失敗,因為第二行代碼會解釋為C#代碼://Soisthis,butthisbitisn*t.這類注釋可用于語句的說明,因為它們都放在一行上:<Astatement>; //Explanationofstatement前面說過有兩種給C#代碼添加注釋的方法。但在C#中,還有第三類注釋,嚴格地說,這是〃語法的擴展。它們都是單行注釋,用三個"/"符號來開頭,而不是兩個。///Aspecialcomment在正常情況下,編譯器會忽略它們,就像其他注釋ー樣,但可以配置VS,在編譯項目時,提取這些注釋后面的文本,創(chuàng)建一個特殊格式的文本文件,該文件可用于創(chuàng)建文檔說明書。具體內(nèi)容見第31章。特別要注意的一點是,C#代碼是區(qū)分大小寫的。與其他語言不同,必須使用正確的大小寫形式輸入代碼,因為簡單地用大寫字母代替小寫字母會中斷項目的編譯??纯聪旅孢@行代碼,它在第2章的第一個示例中使用:Console.WriteLine("ThefirstappinBeginningC#Programming!");C#編譯器能理解這行代碼,因為Console.WriteLine。命令的大小寫形式是正確的。但是,下面的語句都不能工作:console.WriteLine("ThefirstappinBeginningC#Programming!");CONSOLE.WRITELINE("ThefirstappinBeginningC#Programming!");Console.Writeline("ThefirstappinBeginningC#Programming!");這里使用的大小寫形式是錯誤的,所以C#編譯器不知道我們要做什么。幸好,VCE在代碼的輸入方面提供了許多幫助,在大多數(shù)情況下,它都知道(程序也知道)我們要做什么。在輸入代碼的過程中,VS會推薦用戶可能要使用的命令,并盡可能糾正大小寫問題。3.2 C#控制臺應(yīng)用程序的基本結(jié)構(gòu)下面看看第2章的控制臺應(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é)討論的所有語法元素這里都有。其中有分號、花括號、注釋和適當?shù)目s進。目前看來,這段代碼中最重要的部分如下所示:staticvoidMain(string[]args)(//Outputtexttothescreen.Console.WriteLine("ThefirstappinBeginningC#Programming!");Console.ReadKey();}在運行控制臺應(yīng)用程序時,就會運行這段代碼,更準確地說,是運行花括號中的代碼塊。如前所述,注釋行不做任何事情,包含它們只為了簡潔而已。其他兩行代碼在控制臺窗口中輸出了一些文本,并等待ー個響應(yīng).但目前我們還不需要關(guān)心它的具體機制。這里要注意一下如何實現(xiàn)第2章介紹的代碼突出顯示功能,這對于Windows應(yīng)用程序來說比較.重要,因為它是?個非常有用的特性。要實現(xiàn)該功能,需要使用#region和#endregion關(guān)鍵字,來定義可以展開和折疊的代碼區(qū)域的開頭和結(jié)尾。例如,可以修改為ConsoleApplication!生成的代碼,如下所示:#regionUsingdirectivesusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;『endregion這樣就可以把這些代碼行折疊為一行,以后要查看其細節(jié)時,可以再次展開它。這里包含的using語句和其下的namespace語句將在本章的后面解釋。注釋:以#開頭的任意關(guān)鍵字實際上都是ー個預(yù)處理指令,嚴格地說并不是C#關(guān)鍵字.除了這里描述的#region和#endregion關(guān)鍵字之外,其他關(guān)鍵字都相當復雜,用法也比較專業(yè).所以,這是ー個讀者通讀全書后才能探究的主題?,F(xiàn)在不必考慮示例中的其他代碼,因為本書前幾章僅解釋C#的基本語法,至于應(yīng)用程序進行Console.WriteLine。調(diào)用的具體方式,則不在我們的考慮之列。以后會闡述這些代碼的重要性。3.3變量如前所述,變量關(guān)系到數(shù)據(jù)的存儲。實際上,可以把計算機內(nèi)存中的變量看作架子上的盒子。在這些盒子中,可以放入ー些東西,再把它們?nèi)〕鰜恚蛘咧皇强纯春凶永锸欠裼袞|西。變量也是這樣,數(shù)據(jù)可放在變量中,可以從變量中取出數(shù)據(jù)或查看它們。盡管計算機中的所有數(shù)據(jù)都是相同的東西(ー組0和1),但變量有不同的內(nèi)涵,稱為類型。下面再使用盒子來類比,盒子有不同的形狀和尺寸,某些東西只能放在特定的盒子中。建立這個類型系統(tǒng)的原因是,不同類型的數(shù)據(jù)需要用不同的方法來處理。變量限定為不同的類型,可以避免混淆它們。例如,組成數(shù)字圖片的0和1序列與組成聲音文件的0和1序列,其處理方式是不同的。要使用變量,需要聲明它們。即給變量指定名稱和類型。聲明了變量后,就可以把它們用作存儲單元,存儲聲明的數(shù)據(jù)類型的數(shù)據(jù)。聲明變量的C#語法是,指定類型和變量名,如下所示:<type><name>;如果使用未聲明的變量,代碼就不會編譯,但此時編譯器會告訴我們出現(xiàn)了什么問題,所以這不是一個災(zāi)難性錯誤。另外,使用未賦值的變量也會產(chǎn)生一個錯誤,編譯器會檢測出這個錯誤??梢允褂玫淖兞款愋褪菬o限多的。其原因是可以自己定義類型,存儲各種復雜的數(shù)據(jù)。盡管如此,總有一些數(shù)據(jù)類型是每個人都要使用的,例如,存儲數(shù)值的變量。因此,我們應(yīng)了解ー些簡單的預(yù)定義類型。3.3.1簡單類型簡單類型就是組成應(yīng)用程序中基本組成部件的類型,例如,數(shù)值和布爾值(true或回se)。簡單類型與復雜類型不同,不能有子類型或?qū)傩?。大多?shù)簡單類型都是存儲數(shù)值的,初看起來有點奇怪,肯定只需要一種類型來存儲數(shù)值嗎?數(shù)值類型過多的原因是在計算機內(nèi)存中,把數(shù)字作為一系列的。和1來存儲的機制。對于整數(shù)值,用一定的位(單個數(shù)字,可以是。或1)來存儲,用二進制格式來表示。以N位來存儲的變量可以表示任何介于〇到(2電1)之間的數(shù)。大于這個值的數(shù)因為太大,所以不能存儲在這個變量中。例如,有一個變量存儲了2位,在整數(shù)和表示該整數(shù)的位之間的映射應(yīng)如下所示:0=00=01=10=11如果要存儲更大的數(shù),就需要更多的位(例如,3位可以存儲0-7的數(shù))。這個論點的結(jié)論是要存儲每個可以想像得到的數(shù),就需要非常多的位,這并不適合PC。即使可以用足夠多的位來表示每ー個數(shù),變量使用這些位來存儲它,其效率也非常低下,例如,只需要存儲從0~10之間的數(shù)(因為存儲器被浪費了)。其實4位就足夠了,可以用相同的內(nèi)存空間存儲這個范圍內(nèi)的更多數(shù)值。相反,許多不同的整數(shù)類型可以用于存儲不同范圍的數(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中定義的標準類型.如第1章所述,使用標準類型可以在語言之間交互操作。在C#中這些類型的名稱是Framework中定義的別名,表3-1列出了這些類型在.NETFramework庫中的名稱.-ー些變量名稱前面的“u”是unsigned的縮寫,表示不能在這些類型的變量中存儲負號,參見該表中的“允許的值”一列。當然,還需要存儲浮點數(shù),它們不是整數(shù)。可以使用的浮點數(shù)變量類型有3種:float、double和decimaL前兩種可以用+/-mx2c的形式存儲浮點數(shù),m和e的值隨著類型的不同而不同。Decimal使用另一種形式:+/-mxlび。這3種類型、其m和e的值,以及它們在實數(shù)中的上下限如表3-2所示。類型別名m的最小值m的最大值e的最小值e的最大值近似的最小值近似的最大值floatSystem.Singl5x10書3.4x1038doubleSystem.Doubl0x10-3241.7x1030KdecimalSystem.Decimal0296-2601.0x10287.9x102K除了數(shù)值類型外,還有另外3種簡單類型,如表3-3所示。表3-3類型另リ名允許的值charSystem.Char?個Unicode字符,存儲0-65535之間的整數(shù)boolSystem.Boolean布爾值:true或falsestringSystem.Stringー組字符注意組成string的字符數(shù)沒有上限,因為它可以使用可變大小的內(nèi)存。布爾類型bool是C#中最常用的ー種變量類型,類似的類型在其他語言的代碼中非常豐富。當編寫應(yīng)用程序的邏輯流程時,一個可以是true或面se的變量有非常重要的分支作用。例如,考慮一下有多少問題可以用true或回se(或yes和no)來回答。執(zhí)行變量值之間的比較或檢査輸入的有效性就是后面使用布爾變量的兩個編程示例。介紹了這些類型后,下面用一個小示例來聲明和使用它們。在下面的示例中,要使用一些簡單的代碼來聲明兩個變量,給它們賦值,再輸出這些值。試試看:使用簡單類型的變量(1)在目錄C:\BegVCSharp\Ch叩ler03下創(chuàng)建一個新的控制臺應(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)運行代碼,結(jié)果如圖3?1所示。圖3?1示例的說明我們添加的代碼完成了以下3項任務(wù):聲明兩個變量給這兩個變量賦值將兩個變量的值輸出到控制臺上變量聲明使用下述代碼:intmylnteger;stringmyString;第一行聲明一個類型為int的變量mylnteger,第二行聲明一個類型為string的變量myStringo提示:變量的命名是有限制的,不能使用任意的字符序列。本節(jié)的后面將介紹變量的命名規(guī)則.接下來的兩行代碼給變量賦值:mylnteger=17;myString="\"mylnteger\"is";使用=賦值運算符(在本章的“表達式”ー節(jié)中將詳細介紹)給變量分配兩個固定的值(在代碼中稱為字面值)。把整數(shù)值17賦給mylnteger,把字符串"mylnteger"(包括引號)賦給myString.以這種方式給字符串賦予字面值時,必須用雙引號把字符串括起來。因此,如果字符串本身包含雙引號,就會出現(xiàn)錯誤,必須用ー些表示這些引號字符的其他字符(即轉(zhuǎn)義序列)來替代它們。在本例中,使用序列、"來轉(zhuǎn)義雙引號:myString="\"mylnteger\"is";如果不使用這些轉(zhuǎn)義序列,而輸入如下代碼:myString=""mylnteger"is";就會出現(xiàn)編譯錯誤。注意給字符串賦予字面值時,必須小心換行——C#編譯器會拒絕分布在多行上的字符串字面值。如果要添加一個換行符,可以在字符串中使用回車換行符的轉(zhuǎn)義序列,即、n。例如,賦值語句:myString="Thisstringhasa\nlinebreak.";會在控制臺視圖中顯示兩行代碼,如下
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷凍海水產(chǎn)品購銷協(xié)議
- 測量不確定度
- 八年級英語上冊 Unit 9 Can you come to my party Section B(2a-2e)教案 (新版)人教新目標版
- 安徽省長豐縣2024-2025學年高中政治 第四課 第二框 認識運動 把握規(guī)律教案 新人教版必修4
- 2024年春九年級化學下冊 9 溶液 課題2 溶解度教案 (新版)新人教版
- 2024-2025學年高中數(shù)學上學期第10周 3.1.1方程的根與函數(shù)的零點教學設(shè)計
- 2023七年級英語下冊 Unit 3 How do you get to school Section A 第1課時(1a-2e)教案 (新版)人教新目標版
- 2024-2025年新教材高中生物 第6章 第3節(jié) 細胞的衰老和死亡教案 新人教版必修1
- 預(yù)制房屋采購合同范本(2篇)
- 美味冰淇淋課件
- 經(jīng)濟學的思維方式(第13版)
- 華為HCIP-Kunpeng 鯤鵬 H13-121認證 考試復習題庫(含答案)
- 人教版2024年新版七年級上冊英語Unit 3 模擬測試卷(含答案)
- 電力電子技術(shù)(廣東工業(yè)大學)智慧樹知到期末考試答案章節(jié)答案2024年廣東工業(yè)大學
- 2023廣西玉林市北流市殘疾人聯(lián)合會招聘鎮(zhèn)(街道)社區(qū)殘疾人專職委員聘用前筆試歷年典型考題及考點剖析附答案帶詳解
- 金融借款合同糾紛代理解決方案
- 大連遼寧大連理工大學會計核算中心自聘人員招聘筆試歷年典型考題及考點附答案解析
- 廚房廢油回收合同
- 浙教版(2023)五下信息科技第1課《身邊的系統(tǒng)》教學設(shè)計
- GB/T 2039-2024金屬材料單軸拉伸蠕變試驗方法
- TD/T 1054-2018 土地整治術(shù)語(正式版)
評論
0/150
提交評論