C#是Microsoft于2000年7月推出.NET Framework的第1版時(shí)提供的一種全新語言。C#從那時(shí)起迅速流行開來,成為使用.NET Framework的桌面、Web和云開發(fā)人員無可爭(zhēng)議的選擇。他們喜歡C#的一個(gè)原因是其繼承自C/C++的簡(jiǎn)潔明了的語法,這種語法簡(jiǎn)化了以前給程序員帶來困擾的一些問題。盡管做了這些簡(jiǎn)化,但C#仍保持了C++原有的功能,所以現(xiàn)在沒理由不從C++轉(zhuǎn)向C#。C#語言并不難,也非常適合學(xué)習(xí)基本編程技術(shù)。易于學(xué)習(xí),再加上.NET Framework的功能,使C#成為開始你編程生涯的絕佳方式。
C#的最新版本C# 6是.NET Framework 4.6的一部分,它建立在已有的成功基礎(chǔ)之上,還添加了一些更吸引人的功能。Visual Studio的最新版本Visual Studio 2015和開發(fā)工具的Visual Studio Express/Community 2015系列也有許多變化和改進(jìn),這大大簡(jiǎn)化了編程工作,顯著提高了效率。
本書將全面介紹C#編程的所有知識(shí),從該語言本身一直到桌面編程和云編程,再到數(shù)據(jù)源的使用,最后是一些新的高級(jí)技術(shù)。我們還將學(xué)習(xí)Visual Studio 2015的功能和利用它開發(fā)應(yīng)用程序的各種方式。
本書文筆優(yōu)美流暢,闡述清晰,每一章都以前面章節(jié)的內(nèi)容為基礎(chǔ),便于讀者掌握高級(jí)技術(shù)。每個(gè)概念都會(huì)根據(jù)需要來介紹和討論,而不會(huì)突然冒出某個(gè)技術(shù)術(shù)語來妨礙讀者的閱讀和理解。本書盡量減少使用的技術(shù)術(shù)語數(shù)量,但如有必要,將根據(jù)上下文進(jìn)行正確的定義和布置。
本書作者都是各自領(lǐng)域的專家,都是C#語言和.NET Framework的愛好者,沒人比他們更有資格講授C#了,他們將在你掌握從基本規(guī)則到高級(jí)技術(shù)的過程中為你保駕護(hù)航。除了基礎(chǔ)知識(shí)外,本書還有許多有益的提示、練習(xí)、完全成熟的示例代碼(可從p2p.wrox.com下載),在你的職業(yè)生涯中一定會(huì)反復(fù)用到它們。
本書將毫無保留地傳授這些知識(shí),希望讀者能通過閱讀本書成為最優(yōu)秀的程序員。
0.1 本書讀者對(duì)象
本書面向想學(xué)習(xí)如何使用.NET Framework編寫C#程序的所有人。本書針對(duì)的是想要通過學(xué)習(xí)一種干凈、現(xiàn)代、優(yōu)雅的編程語言來掌握程序設(shè)計(jì)的完完全全的初學(xué)者。但是,對(duì)于熟悉其他語言、想要探索.NET平臺(tái)的人們,以及想要了解.NET使用的旗艦語言的.NET開發(fā)人員,本書同樣有用。
0.2 本書內(nèi)容
本書前面的章節(jié)介紹C#語言本身,讀者不需要具備任何編程經(jīng)驗(yàn)。以前對(duì)其他語言有一定了解的開發(fā)人員,會(huì)覺得這些章節(jié)的內(nèi)容非常熟悉。C#語法的許多方面都與其他語言相同,許多結(jié)構(gòu)對(duì)所有的編程語言來說都是相通的(例如,循環(huán)和分支結(jié)構(gòu))。但是,即使是有經(jīng)驗(yàn)的程序員也可以通過這些章節(jié)理解此類技術(shù)應(yīng)用于C#的特征,從而從中獲益。
如果讀者是編程新手,就應(yīng)從頭開始學(xué)習(xí),了解基本的編程概念,并熟悉C#和支持C#的.NET平臺(tái)。如果讀者對(duì).NET Framework比較陌生,但知道如何編程,就應(yīng)閱讀第1章,然后快速跳讀后面幾章,這樣就能掌握C#語言的應(yīng)用方式了。如果讀者知道如何編程,但以前從未接觸過面向?qū)ο蟮木幊陶Z言,就應(yīng)從第8章開始閱讀以后的章節(jié)。
如果讀者對(duì)C#語言比較了解,就可以集中精力學(xué)習(xí)那些詳細(xì)論述最新.NET Framework和C#語言開發(fā)的章節(jié),尤其是集合、泛型和C#語言的新增內(nèi)容(第11章~第13章),或者完全跳過本書第I部分,從第14章開始學(xué)習(xí)。
本書章節(jié)的編排方式可以達(dá)到兩個(gè)目的:可以按順序閱讀這些章節(jié),將其視為C#語言的一個(gè)完整教程;還可以按照需要深入學(xué)習(xí)這些章節(jié),將其作為一本參考資料。
除核心內(nèi)容外,從第3章開始,每章末尾還包含一組習(xí)題,完成這些習(xí)題有助于讀者理解所學(xué)的內(nèi)容。習(xí)題包括簡(jiǎn)單的選擇題、判斷題以及需要修改或建立應(yīng)用程序的較難問題。附錄A給出了全部習(xí)題的答案。
本書特別注重與C# 6、.NET 4.6的一致性。每一章都進(jìn)行了徹底的檢查,刪掉了不太相關(guān)的內(nèi)容,增加了新材料。所有代碼都在最新版本的開發(fā)工具上進(jìn)行了測(cè)試,所有屏幕截圖都在Windows 8.1/10上重新截取,以提供最新的窗口和對(duì)話框。
本書的亮點(diǎn)包括:
● 增加并改進(jìn)了代碼示例。
● 涵蓋C# 6和.NET 4.6的所有新內(nèi)容,包括如何創(chuàng)建通用Windows應(yīng)用程序。
● 增加了編寫云應(yīng)用程序的示例,并使用Azure SDK創(chuàng)建和訪問云資源。
0.3 本書結(jié)構(gòu)
本書分為6個(gè)部分。
● 前言:概述本書的內(nèi)容。
● OOP語言:介紹C#語言的所有內(nèi)容,從基礎(chǔ)知識(shí)到面向?qū)ο蟮募夹g(shù),一應(yīng)俱全。
● Windows編程:介紹如何用WPF庫編寫和部署桌面應(yīng)用程序。
● 云編程:描述云應(yīng)用程序的開發(fā)和部署,包括Web API的創(chuàng)建和使用。
● 數(shù)據(jù)訪問:介紹如何在應(yīng)用程序中使用數(shù)據(jù),包括存儲(chǔ)在硬盤文件中的數(shù)據(jù)、以XML格式存儲(chǔ)的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)。
● 其他技術(shù):講述使用C#和.NET Framework的一些額外方式,包括WCF和通用Windows應(yīng)用程序。
下面介紹本書5個(gè)重要部分中的章節(jié)。
0.3.1 OOP語言(第1章~第13章)
第1章介紹C#及其與.NET的關(guān)系,了解在這個(gè)環(huán)境下編程的基礎(chǔ)知識(shí),以及Visual Studio 2015(VS)與它的關(guān)系。
第2章開始介紹如何編寫C#應(yīng)用程序,學(xué)習(xí)C#的語法,并將C#和示例命令行、Windows應(yīng)用程序結(jié)合起來使用。這些示例將說明C#如何快速輕松地啟動(dòng)和運(yùn)行,并附帶介紹VS開發(fā)環(huán)境以及本書將要使用的基本窗口和工具。
接著將學(xué)習(xí)C#的基礎(chǔ)知識(shí)。第3章介紹變量的含義以及如何操縱它們。第4章將用流程控制(循環(huán)和分支)改進(jìn)應(yīng)用程序的結(jié)構(gòu),第5章介紹一些高級(jí)變量類型,如數(shù)組。第6章開始以函數(shù)形式封裝代碼,這樣就更易于執(zhí)行重復(fù)操作,使代碼更容易讓人理解。
從第7章開始將運(yùn)用C#語言的基礎(chǔ)知識(shí),調(diào)試應(yīng)用程序。這包括在運(yùn)行應(yīng)用程序時(shí)輸出跟蹤信息,使用VS查找錯(cuò)誤,在強(qiáng)大的調(diào)試環(huán)境中找出解決問題的辦法。
第8章將學(xué)習(xí)面向?qū)ο缶幊?Object-Oriented Programming,OOP)。首先了解這個(gè)術(shù)語的含義,回答“什么是對(duì)象”?OOP初看起來是較難的問題。我們將用一整章的篇幅來介紹它,解釋對(duì)象的強(qiáng)大之處。直到該章的最后才會(huì)真正使用C#代碼。
第9章將理論知識(shí)應(yīng)用于實(shí)踐,開始在C#應(yīng)用程序中使用OOP時(shí),這才體現(xiàn)出C#的真正威力。在第9章介紹如何定義類和接口之后,第10章將探討類成員(包括字段、屬性和方法),在這一章的最后將開始創(chuàng)建一個(gè)撲克牌游戲,這個(gè)游戲?qū)⒃趲渍轮虚_發(fā)完成,它非常有助于理解OOP。
學(xué)習(xí)了OOP在C#中的工作原理后,第11章將介紹幾種常見的OOP場(chǎng)景,包括處理對(duì)象集合、比較和轉(zhuǎn)換對(duì)象。第12章討論.NET 2.0中引入的一個(gè)非常有用的C#特性—— 泛型,利用它可以創(chuàng)建非常靈活的類。第13章通過一些其他技術(shù)(主要是事件,它在Windows編程中非常重要)繼續(xù)討論C#語言和OOP。最后介紹C#在3.0、4、5和6版本中引入的新特性。
0.3.2 Windows編程(第14章和第15章)
第14章開始介紹Windows編程概念,理解在VS中如何實(shí)現(xiàn)Windows編程。該章主要關(guān)注如何使用WPF以圖形化方式構(gòu)建桌面應(yīng)用程序,以及用最少的時(shí)間和精力創(chuàng)建高級(jí)桌面應(yīng)用程序。你將首先學(xué)習(xí)WPF編程的基礎(chǔ)知識(shí),然后在該章和第15章逐漸拓展相關(guān)知識(shí)。第15章介紹在應(yīng)用程序中如何使用.NET Framework提供的豐富控件。
0.3.3 云編程(第16章和第17章)
第16章首先描述云編程,再討論云優(yōu)化堆棧。云環(huán)境不同于傳統(tǒng)的程序編碼方式,所以討論、定義了幾個(gè)云編程模式。為完成這一章,需要一個(gè)免費(fèi)的Azure賬戶,以便創(chuàng)建一個(gè)App Services Web App,然后使用Azure SDK和C#,在ASP.NET 4.6 Web應(yīng)用程序中創(chuàng)建和訪問存儲(chǔ)賬戶。
第17章將學(xué)習(xí)如何創(chuàng)建ASP.NET Web API,并部署到云中,然后在類似的ASP.NET 4.6 Web應(yīng)用程序中使用Web API。這一章最后討論云中兩個(gè)最有價(jià)值的特性:硬件資源的縮放和最優(yōu)利用方式。
0.3.4 數(shù)據(jù)訪問(第18章~第21章)
第18章介紹應(yīng)用程序如何將數(shù)據(jù)保存到磁盤以及如何檢索磁盤上的數(shù)據(jù)(作為簡(jiǎn)單的文本文件或者更復(fù)雜的數(shù)據(jù)表示方式)。該章還將討論如何壓縮數(shù)據(jù),如何監(jiān)視和處理文件系統(tǒng)的變化。
第19章學(xué)習(xí)數(shù)據(jù)交換的事實(shí)標(biāo)準(zhǔn)XML,簡(jiǎn)要論述JSON格式。之前的章節(jié)接觸過XML幾次,而該章將討論XML的基本規(guī)則,論述XML的所有功能。
該部分其余章節(jié)介紹LINQ(這是內(nèi)置于.NET Framework最新版本中的查詢語言)。第20章簡(jiǎn)要介紹LINQ。第21章討論如何使用LINQ訪問數(shù)據(jù)庫和其他數(shù)據(jù)。
0.3.5 其他技術(shù)(第22章和第23章)
第22章簡(jiǎn)要介紹Windows Communication Foundation(WCF),它為在企業(yè)級(jí)以編程方式跨本地網(wǎng)絡(luò)和Interent訪問信息和功能提供了許多工具。該章將介紹如何以平臺(tái)無關(guān)的方式使用WCF,向Web應(yīng)用程序和桌面應(yīng)用程序公開復(fù)雜的數(shù)據(jù)和功能。
第23章展示如何創(chuàng)建通用Windows應(yīng)用程序,這是Windows新增的。本章建立在第14和第15章的基礎(chǔ)上,介紹如何創(chuàng)建可以運(yùn)行在所有Windows平臺(tái)上的Windows應(yīng)用程序。
0.4 使用本書的要求
本書中C#和.NET Framework的代碼和描述都適用于C# 6和.NET 4.6。除了Framework之外,不需要其他組件就可以理解本書的這個(gè)方面,但許多示例都需要使用開發(fā)工具。本書將Visual Studio 2015作為主要開發(fā)工具,但是,如果沒有安裝此工具,可以使用免費(fèi)的Visual Studio Express/Community 2015產(chǎn)品系列。在本書的第I部分,可使用Visual Studio Express/ Community 2012 for Windows Desktop來創(chuàng)建桌面和控制臺(tái)應(yīng)用程序。對(duì)于其余章節(jié),可使用Visual Studio Express/Community 2015 for Windows 10創(chuàng)建通用Windows應(yīng)用程序,使用Visual Studio Express/Community 2015 for Cloud創(chuàng)建云應(yīng)用程序,并在需要訪問數(shù)據(jù)庫的應(yīng)用程序中使用SQL Server Express 2014。一些功能只能在Visual Studio 2015中使用,但這不會(huì)妨礙練習(xí)本書的示例。
0.5 本書約定
為了幫助讀者在閱讀本書的過程中獲取最多信息,并隨時(shí)了解當(dāng)前處理的事項(xiàng),本書使用了許多約定。
本書通過兩種方式來顯示代碼:
● 對(duì)于大多數(shù)代碼示例,使用沒有突出顯示的等寬字體來表示。
● 對(duì)在當(dāng)前上下文中特別重要的代碼,用粗體字來強(qiáng)調(diào)顯示。
0.6 勘誤表
盡管我們已經(jīng)盡了各種努力來保證文章或代碼中不出現(xiàn)錯(cuò)誤,但是錯(cuò)誤總是難免的,如果你在本書中找到了錯(cuò)誤,例如拼寫錯(cuò)誤或代碼錯(cuò)誤,請(qǐng)告訴我們,我們將非常感激。通過勘誤表,可以讓其他讀者避免受挫,當(dāng)然,這還有助于提供更高質(zhì)量的信息。
請(qǐng)給wkservice@vip.163.com發(fā)電子郵件,我們就會(huì)檢查你的反饋信息,如果是正確的,我們將在本書的后續(xù)版本中采用。
要在網(wǎng)站上找到本書英文版的勘誤表,通過Search工具或書名列表查找本書,然后在本書的細(xì)目頁面上,單擊Book Errata鏈接。在這個(gè)頁面上可以查看到Wrox編輯已提交和粘貼的所有勘誤項(xiàng)。完整的圖書列表還包括每本書的勘誤表。
0.7 p2p.wrox
要與作者和同行討論,請(qǐng)加入p2p.wrox.com上的P2P論壇。這個(gè)論壇是一個(gè)基于Web的系統(tǒng),便于你張貼與Wrox圖書相關(guān)的消息和相關(guān)技術(shù),與其他讀者和技術(shù)用戶交流心得。該論壇提供了訂閱功能,當(dāng)論壇上有新的消息時(shí),它可以給你傳送感興趣的論題。Wrox作者、編輯和其他業(yè)界專家和讀者都會(huì)到這個(gè)論壇上來探討問題。
在http://p2p.wrox上,有許多不同的論壇,它們不僅有助于閱讀本書,還有助于開發(fā)自己的應(yīng)用程序。要加入論壇,可以遵循下面的步驟:
(1) 進(jìn)入p2p.wrox,單擊Register鏈接。
(2) 閱讀使用協(xié)議,并單擊Agree按鈕。
(3) 填寫加入該論壇所需要的信息和自己希望提供的其他信息,單擊Submit按鈕。
(4) 你會(huì)收到一封電子郵件,其中的信息描述了如何驗(yàn)證賬戶,完成加入過程。
提示:
不加入P2P也可以閱讀論壇上的消息,但要張貼自己的消息,就必須加入該論壇。
加入論壇后,就可以張貼新消息,響應(yīng)其他用戶張貼的消息。可以隨時(shí)在Web上閱讀消息。如果要讓該網(wǎng)站給自己發(fā)送特定論壇中的消息,可以單擊論壇列表中該論壇名旁邊的Subscribe to this Forum圖標(biāo)。
關(guān)于使用Wrox P2P的更多信息,可閱讀P2P FAQ,了解論壇軟件的工作情況以及P2P和Wrox圖書的許多常見問題。要閱讀FAQ,可以在任意P2P頁面上單擊FAQ鏈接。
0.8 源代碼
……
Benjamin Perkins,是Microsoft的資深“技術(shù)支持”工程師,一位狂熱的C#程序員,在企業(yè)級(jí)IT解決方案領(lǐng)域擁有15年工作經(jīng)驗(yàn)。
Jacob Vibe Hammer,是Terma的一名軟件工程師,合著編寫過多本.NET圖書。
Jon D. Reid,是IFS研發(fā)團(tuán)隊(duì)(www.ifsworld.com)的產(chǎn)品解決方案經(jīng)理,負(fù)責(zé)為Microsoft環(huán)境開發(fā)C#程序。