內(nèi) 容 簡(jiǎn)介C#作為微軟的旗艦編程語(yǔ)言,深受程序員喜愛,是編寫高效應(yīng)用程序的首選語(yǔ)言。Visual C# 2012提供了大量新功能,本書圍繞語(yǔ)言的基礎(chǔ)知識(shí)和這些新功能全面介紹了如何利用Visual Studio 2012和.NET Framework 4.5編寫C#應(yīng)用程序。書中沿襲深受讀者歡迎的Step by Step風(fēng)格,通過(guò)合理的練習(xí)引導(dǎo)讀者逐步構(gòu)建在Windows 7和Windows 8上運(yùn)行的應(yīng)用程序,訪問(wèn)SQL Server數(shù)據(jù)庫(kù),開發(fā)多線程應(yīng)用等。全書共27章,結(jié)構(gòu)清晰,敘述清楚。所有練習(xí)均在Visual Studio 2012簡(jiǎn)體中文版上進(jìn)行過(guò)全面演練。無(wú)論是剛開始接觸面向?qū)ο缶幊痰男率郑是打算轉(zhuǎn)移到C#的具有C、C++或者Java基礎(chǔ)的程序員,都可以從本書汲取到新的知識(shí),迅速掌握C#編程技術(shù)。前 言
Microsoft Visual C#是一種功能強(qiáng)大、使用簡(jiǎn)單的語(yǔ)言,主要面向需要使用Microsoft .NET Framework來(lái)創(chuàng)建應(yīng)用程序的開發(fā)者。它在C++和Microsoft Visual Basic的基礎(chǔ)上去蕪存菁,最終成了一種更加清晰、更富有邏輯的語(yǔ)言。C# 1.0于2001年亮相。幾年后隨著C# 2.0和Visual Studio 2005的問(wèn)世,語(yǔ)言新增了幾個(gè)重要功能,包括泛型、迭代器和匿名方法等。隨Microsoft Visual Studio 2008發(fā)布的C# 3.0添加了更多功能,包括擴(kuò)展方法、Lambda表達(dá)式以及語(yǔ)言集成查詢(Language Integrated Query,LINQ)。2010年發(fā)布的C# 4.0提供了進(jìn)一步的增強(qiáng),它改善了與其他語(yǔ)言和技術(shù)的互操作性。新增功能包括具名參數(shù)和可選參數(shù),另外還有dynamic類型(告訴語(yǔ)言的“運(yùn)行時(shí)”實(shí)現(xiàn)對(duì)象的晚期綁定)。在隨C# 4.0發(fā)布的.NET Framework中,最重要的新功能就是“任務(wù)并行庫(kù)”(Task Parallel Library,TPL)。可用TPL構(gòu)建具有良好伸縮性的應(yīng)用程序,從而快速和簡(jiǎn)單地發(fā)揮出多核處理器的潛力。C# 5.0則通過(guò)async修飾符和await操作符提供了對(duì)異步任務(wù)的原生支持。
Windows 8是Microsoft公司近年來(lái)最具革命性的一款操作系統(tǒng)。新操作系統(tǒng)支持高度交互式的應(yīng)用程序,它們能相互分享和協(xié)作,還能輕松連接云端服務(wù)。Visual Studio 2012開發(fā)環(huán)境使這些強(qiáng)大功能變得很容易使用,大量新向?qū)Ш驮鰪?qiáng)功能顯著提高了開發(fā)效率。Visual Studio 2012、Windows 8和C# 5.0三劍客提供了完善的平臺(tái)和工具集來(lái)幫助你開發(fā)下一代功能強(qiáng)大的、直觀的而且容易移植的應(yīng)用程序。但是,即便不用Windows 8進(jìn)行開發(fā),Visual Studio 2012和C# 5.0這兩者的組合也能提供強(qiáng)大的助力。
本書面向的讀者
本書假定你要使用Visual Studio 2012和.NET Framework 4.5學(xué)習(xí)基礎(chǔ)的C#編程知識(shí)。學(xué)完本書后,會(huì)對(duì)C#有一個(gè)全面、透徹的理解,會(huì)用它開發(fā)出響應(yīng)速度快的、易于伸縮的、能在Windows 7和Windows 8上運(yùn)行的應(yīng)用程序。
可構(gòu)建并運(yùn)行在Windows 7和Windows 8上運(yùn)行的C# 5.0應(yīng)用程序。但兩種操作系統(tǒng)的用戶界面顯著不同,所以第I部分到第III部分的練習(xí)和示例在兩種環(huán)境下都能運(yùn)行,而第IV部分專注于Windows 8應(yīng)用開發(fā)。
本書不面向的讀者
本書面向剛開始涉足C#應(yīng)用開發(fā)的人士,重點(diǎn)放在C#語(yǔ)言上面。本書不涉及企業(yè)級(jí)Windows應(yīng)用程序開發(fā),比如ADO.NET,ASP.NET,Windows Communication Foundation或者Workflow Foundation。要了解這些方面的知識(shí),可閱讀“從入門到精通”系列的其他書籍,包括《ASP.NET 4從入門到精通》、《ADO.NET 4從入門到精通》以及《Windows Communication Foundation 4從入門到精通》。
本書的組織
本書分為以下四大部分。
* 第I部分“Visual C#和Visual Studio 2012概述”介紹C#語(yǔ)言的核心語(yǔ)法,演示了Visual Studio編程環(huán)境。
* 第II部分“理解C#對(duì)象模型”深入探討如何用C#創(chuàng)建和管理新類型,如何管理這些類型引用的資源。
* 第III部分“用C#定義可擴(kuò)展類型”全面討論如何利用C#語(yǔ)言元素來(lái)構(gòu)建能在多個(gè)應(yīng)用程序中重用的類型。
* 第IV部分“使用C#構(gòu)建專業(yè)Windows 8應(yīng)用程序”描述Windows 8編程模型,如何用C#為新模型構(gòu)建交互式應(yīng)用程序。
注意 雖然第IV部分面向Windows 8,但第23章和第24章的一些概念仍然適用于Windows 7應(yīng)用程序。
導(dǎo)讀
本書幫助你掌握多個(gè)基本領(lǐng)域的開發(fā)技能。無(wú)論剛開始學(xué)習(xí)編程,還是從另一種語(yǔ)言(C、C++、Java或Visual Basic)轉(zhuǎn)向C#,本書都能提供幫助。可以參考下表找到自己的最佳起點(diǎn)。
讀者類型
步驟
面向?qū)ο缶幊痰男率?br /> 1. 按照“范例代碼”一節(jié)的步驟安裝練習(xí)文件。
2. 順序閱讀第Ⅰ部分、第Ⅱ部分和第Ⅲ部分。
3. 有了一定經(jīng)驗(yàn)后,如果有興趣,繼續(xù)完成第Ⅳ部分的學(xué)習(xí)。
熟悉C語(yǔ)言等過(guò)程編程語(yǔ)言,但新涉足C#1. 按照“范例代碼”一節(jié)的步驟安裝練習(xí)文件。略讀前5章來(lái)獲
得對(duì)C#和Visual Studio 2012的大致印象,重點(diǎn)閱讀第6~22章。
2. 有了一定經(jīng)驗(yàn)后,如果有興趣就繼續(xù)完成第Ⅳ部分的學(xué)習(xí)。
從面向?qū)ο笳Z(yǔ)言C++或Java等遷移到C#
1. 按照“范例代碼”一節(jié)的步驟安裝練習(xí)文件。
2. 略讀前7章,獲得對(duì)C#語(yǔ)言和Visual Studio 2012的大致印象,
重點(diǎn)閱讀第8~22章。
3. 要想了解Windows 8應(yīng)用程序開發(fā),請(qǐng)閱讀第Ⅳ部分。續(xù)表
讀者類型
步驟
從Visual Basic 6遷移到C#
1. 按照“范例代碼”一節(jié)的步驟安裝練習(xí)文件。
2. 順序閱讀第Ⅰ部分、第Ⅱ部分和第Ⅲ部分。
3. 如要了解Windows 8應(yīng)用程序開發(fā),請(qǐng)閱讀第Ⅳ部分。
4. 閱讀每章末尾的“快速參考”小節(jié),了解C#特有的構(gòu)造。
做完所有練習(xí)后再將本書作為參考書使用的讀者
1. 根據(jù)目錄尋找特定主題的信息。
2. 閱讀每章最后的“快速參考”,查看對(duì)當(dāng)前章所介紹的語(yǔ)法和
技術(shù)的簡(jiǎn)單回顧。本書大多數(shù)章節(jié)都通過(guò)實(shí)際的例子來(lái)方便讀者試驗(yàn)剛學(xué)到的概念。無(wú)論感興趣的是哪個(gè)主題,都需要下載并安裝范例代碼。
本書的約定和特色
本書通過(guò)一些約定來(lái)增強(qiáng)內(nèi)容的可讀性,以便于讀者理解。
* 每個(gè)練習(xí)都用編號(hào)的操作步驟來(lái)完成。
* “注意”等特色段落提供了成功完成一個(gè)步驟需要了解的額外信息或替代方案。
* 要求讀者輸入的文本加粗顯示。
* 兩個(gè)鍵名之間的加號(hào)(+)意味著必須同時(shí)按下這兩個(gè)鍵。例如,“按Alt+Tab鍵”意味著按住Alt鍵不放,然后按Tab鍵。
* 描述菜單操作時(shí),采取“文件”|“打開”的形式,意思是從“文件”菜單中選擇“打開”命令。
系統(tǒng)需求
為了完成本書的練習(xí),需準(zhǔn)備以下硬件和軟件:
* Windows 7(x86或x64),Windows 8(x86或x64),Windows Server 2008 R2(x64)或者Windows Server 2012(x64)
注意 Visual Studio 2012還支持Windows Vista、Windows XP和Windows Server 2003。但本書的練習(xí)和代碼未在這些平臺(tái)上測(cè)試。
* Visual Studio 2012(除Visual Studio Express for Windows 8之外的任意版本)
注意 可以使用Visual Studio Express 2012 for Windows Desktop,但就只能執(zhí)行本書的Windows 7版本的練習(xí)。不可用它執(zhí)行第IV部分的練習(xí)。
* 1.6 GHz或更快的處理器(推薦2 GHz以上)
* 32位操作系統(tǒng)至少1 GB RAM,64位至少2 GB RAM。在虛擬機(jī)中運(yùn)行再加512 MB
* 10 GB剩余硬盤空間
* 支持DirectX 9的顯示卡,1024 × 768或更高分辨率。Windows 8推薦1366 × 768或更高分辨率
* DVD-ROM驅(qū)動(dòng)器(如果從DVD安裝Visual Studio)
* 下載軟件和范例代碼需要Internet連接
此外,還需要以管理員身份安裝和配置Visual Studio 2012。
范例代碼
本書的配套網(wǎng)絡(luò)資源包含練習(xí)時(shí)會(huì)用到的范例代碼。使用這些范例代碼,讀者不再需要浪費(fèi)時(shí)間創(chuàng)建和練習(xí)無(wú)關(guān)的文件。借助于這些練習(xí)文件和課程中描述的步驟,讀者可以在實(shí)踐中學(xué)習(xí),這是迅速掌握并記住新的編程技能的一種簡(jiǎn)單而高效的方式。
按以下步驟在計(jì)算機(jī)上安裝本書配套代碼。
1. 在Internet Explorer或其他瀏覽器的地址欄中輸入transbot.blog.163.com。
2. 找到《Visual C# 2012從入門到精通》博客文章,按提示下載源代碼文件壓縮包。
3. 解壓到以下位置:文檔①\Microsoft Press\
也可從譯者的網(wǎng)盤http://transbot.ys168.com下載練習(xí)文件和其他資源。
使用練習(xí)文件
本書每一章都解釋了在什么時(shí)候以及如何使用必要的練習(xí)文件。需要使用練習(xí)文件的時(shí)候,書中會(huì)給出相應(yīng)的指示,幫助你打開正確的文件。
如果想知道所有細(xì)節(jié),可以參見下表,其中列出了本書要用到的所有Visual Studio 2012項(xiàng)目和解決方案,它們以文件夾的形式進(jìn)行分組以便查找。練習(xí)通常會(huì)為同一個(gè)項(xiàng)目提供初始文件和完成之后的版本。有的練習(xí)提供Windows 7和Windows 8兩個(gè)版本,操作步驟會(huì)針對(duì)不同操作系統(tǒng)給出相應(yīng)的指示。已完成的項(xiàng)目存儲(chǔ)在帶有“- Complete”后綴的文件夾中。
注意 如果使用Windows Server 2008 R2,則按照Windows 7的步驟操作。在使用Windows Server 2012時(shí),則按Windows 8的步驟操作。項(xiàng)目名稱
說(shuō)明
第1章TextHello
作為第一個(gè)項(xiàng)目,它將指導(dǎo)你創(chuàng)建一個(gè)簡(jiǎn)單程序來(lái)顯示歡迎文本
WPFHello
使用WPF技術(shù)在窗口中顯示歡迎文本
第2章PrimitiveDataTypes
演示如何使用基元類型來(lái)聲明變量,如何向變量賦值,如何在窗口中顯示值
MathsOperators
演示了算術(shù)操作符(+、–、*、/、%)
第3章Methods
改進(jìn)上個(gè)項(xiàng)目的代碼,體會(huì)如何使用方法來(lái)建立代碼的結(jié)構(gòu)
DailyRate
指導(dǎo)你寫自己的方法,運(yùn)行方法,使用Visual Studio 2012調(diào)試器來(lái)單步執(zhí)行方法
使用可選參數(shù)的DailyRate
演示如何讓方法獲取可選參數(shù),如何使用具名參數(shù)來(lái)調(diào)用方法
第4章Selection
演示如何用嵌套if語(yǔ)句實(shí)現(xiàn)復(fù)雜邏輯,例如比較兩個(gè)日期的相等性
SwitchStatement
這個(gè)簡(jiǎn)單的程序使用一個(gè)switch語(yǔ)句將字符轉(zhuǎn)換成相應(yīng)的XML形式
第5章WhileStatement
使用while語(yǔ)句逐行讀取源文件的內(nèi)容,并在Windows窗體的文本框中顯示每一行
DoStatement
使用do語(yǔ)句將十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制
第6章MathsOperators
對(duì)第2章的MathsOperators項(xiàng)目進(jìn)行改進(jìn),試驗(yàn)會(huì)造成程序執(zhí)行失敗的各種未處理的異常。然后,用try和catch關(guān)鍵字使應(yīng)用程序更健壯,不會(huì)因?yàn)殄e(cuò)誤輸入或操作而失敗
第7章Classes
演示如何定義自己的類,為它添加了公共構(gòu)造器、方法和私有字段;還演示如何用new關(guān)鍵字創(chuàng)建類的實(shí)例,如何定義靜態(tài)方法和字段
第8章Parameters
演示值類型和引用類型的參數(shù)的區(qū)別,還演示如何使用ref和out關(guān)鍵字續(xù)表
項(xiàng)目名稱
說(shuō)明
第9章StructsAndEnums
定義結(jié)構(gòu)來(lái)表示日期
第10章Cards
使用數(shù)組來(lái)建模紙牌游戲中的一手牌
第11章ParamsArrays
演示如何使用params關(guān)鍵字使方法能接受任意數(shù)量的參數(shù)
第12章Vehicles
用繼承創(chuàng)建簡(jiǎn)單的交通工具類,還演示如何定義虛方法
ExtensionMethod
演示如何為int類型創(chuàng)建擴(kuò)展方法,提供方法將整數(shù)從十進(jìn)制轉(zhuǎn)換成其他進(jìn)制
第13章Drawing Using Interfaces
實(shí)現(xiàn)圖形繪圖包的一部分。用接口定義要由幾何圖形對(duì)象公開并實(shí)現(xiàn)的方法
Drawing Using Abstract Classes
擴(kuò)展了Drawing Using Interfaces項(xiàng)目,將幾何圖形對(duì)象的常用功能集成到抽象類中
第14章GarbageCollectionDemo
演示如何使用Dispose模式來(lái)實(shí)現(xiàn)異常安全的資源清理
第15章Drawing Using Properties
擴(kuò)展第13章的Drawing Using Abstract Classes項(xiàng)目,用屬性將數(shù)據(jù)封裝到類中
AutomaticProperties
演示如何為類創(chuàng)建自動(dòng)屬性,如何用它們初始化類的實(shí)例
第16章Indexers
該項(xiàng)目使用了兩個(gè)索引器,一個(gè)根據(jù)姓名查找某人的電話號(hào)碼,另一個(gè)根據(jù)電話號(hào)碼查找某人的姓名
第17章BinaryTree
演示如何使用泛型生成類型安全的結(jié)構(gòu),可包含任何類型的元素
BuildTree
演示如何使用泛型實(shí)現(xiàn)類型安全的方法,可獲取任何類型的參數(shù)
第18章Cards
更新第10章的代碼,演示如何用集合建模一手牌
第19章BinaryTree
演示如何實(shí)現(xiàn)泛型IEnumerator<T>接口,為泛型Tree類創(chuàng)建枚舉器
IteratorBinaryTree
用迭代器為泛型Tree類生成枚舉器
第20章Delegates
演示如何通過(guò)委托調(diào)用方法,將方法的邏輯和調(diào)用方法的應(yīng)用程序分開
Delegates With Event
演示如何用事件提醒對(duì)象發(fā)生了某事,如何捕捉事件并執(zhí)行需要的處理
第21章QueryBinaryTree
演示如何通過(guò)LINQ查詢從二叉樹對(duì)象獲取數(shù)據(jù)續(xù)表
項(xiàng)目名稱
說(shuō)明
第22章ComplexNumbers
定義新類型來(lái)建模復(fù)數(shù),并為這種類型實(shí)現(xiàn)常用的操作符
第23章GraphDemo
生成并在WPF窗體上顯示復(fù)雜圖表。使用單線程執(zhí)行計(jì)算
GraphDemo With Tasks
創(chuàng)建多個(gè)任務(wù),并行執(zhí)行圖表計(jì)算
Parallel GraphDemo
使用Parallel類對(duì)創(chuàng)建和管理任務(wù)的過(guò)程進(jìn)行抽象
GraphDemo With Cancellation
中途得體地取消任務(wù)
ParallelLoop
演示何時(shí)不該使用Parallel類創(chuàng)建和運(yùn)行任務(wù)
第24章GraphDemo
對(duì)第23章的同名項(xiàng)目進(jìn)行修改,使用async關(guān)鍵字和await操作符來(lái)異步計(jì)算圖表數(shù)據(jù)
PLINQ
使用并行任務(wù),用PLINQ查詢數(shù)據(jù)
CalculatePI
使用統(tǒng)計(jì)學(xué)采樣計(jì)算PI的近似值。使用了并行任務(wù)
第25章Customers Without Scalable UI
使用默認(rèn)Grid控件進(jìn)行Adventure Works公司的Customers 應(yīng)用程序的UI布局。控件使用絕對(duì)定位,屏幕分辨率和設(shè)備大小改變時(shí),不會(huì)自動(dòng)地伸縮
Customers With Scalable UI
使用嵌套Grid控件并定義行和列來(lái)實(shí)現(xiàn)控件的相對(duì)定位。這個(gè)版本的UI能自動(dòng)適應(yīng)不同的屏幕分辨率和設(shè)備大小。但在貼靠視圖中表現(xiàn)不佳
Customers With Adaptive UI
對(duì)上一個(gè)可伸縮UI進(jìn)行擴(kuò)展。使用Visual State Manager檢測(cè)切換到貼靠視圖的事件,并相應(yīng)修改控件布局
Customers With Styles使用XAML樣式更改字體和背景圖片
第26章
DataBinding
使用數(shù)據(jù)綁定在UI中顯示從數(shù)據(jù)源獲取的客戶資料;還演示了如何實(shí)現(xiàn)INotifyPropertyChanged接口,從而允許UI更新客戶資料,并將改動(dòng)發(fā)送回?cái)?shù)據(jù)源
ViewModel
通過(guò)實(shí)現(xiàn)Model-View-ViewModel模式,將UI同數(shù)據(jù)源訪問(wèn)邏輯分開
Search
實(shí)現(xiàn)Windows 8搜索合約,按名字或姓氏搜索客戶
第27章Data Service
這個(gè)解決方案包含一個(gè)Web應(yīng)用程序來(lái)提供WCF Data Service,使Customers應(yīng)用程序能從SQL Server數(shù)據(jù)庫(kù)獲取客戶數(shù)據(jù)。WCF Data Service通過(guò)由實(shí)體框架創(chuàng)建的實(shí)體模型來(lái)訪問(wèn)數(shù)據(jù)庫(kù)
Updatable ViewModel
這個(gè)解決方案中的Customers項(xiàng)目包含一個(gè)擴(kuò)展的ViewModel,它提供許多命令,允許UI通過(guò)WCF Data Service插入和更新客戶資料
① 本書將路徑“C:\Users\YourName\Documents”簡(jiǎn)單稱為“文檔”文件夾。——譯注目 錄
第I部分 Visual C#和Visual Studio 2012概述
第1章 歡迎進(jìn)入C#編程世界 3
1.1 開始在Visual Studio 2012環(huán)境中
編程 3
1.2 編寫第一個(gè)程序 7
1.3 使用命名空間 11
1.4 創(chuàng)建圖形應(yīng)用程序 14
1.4.1 探索Windows Store應(yīng)用
程序 23
1.4.2 探索WPF應(yīng)用程序 26
1.4.3 向圖形應(yīng)用程序添加代碼 28
小結(jié) 30
第1章快速參考 30
第2章 使用變量、操作符和表達(dá)式 32
2.1 理解語(yǔ)句 32
2.2 使用標(biāo)識(shí)符 33
2.3 使用變量 34
2.3.1 命名變量 34
2.3.2 聲明變量 35
2.4 使用基元數(shù)據(jù)類型 35
2.4.1 未賦值的局部變量 36
2.4.2 顯示基元數(shù)據(jù)類型的值 36
2.5 使用算術(shù)操作符 42
2.5.1 操作符和類型 42
2.5.2 深入了解算術(shù)操作符 44
2.5.3 控制優(yōu)先級(jí) 49
2.5.4 使用結(jié)合性對(duì)表達(dá)式進(jìn)行
求值 49
2.5.5 結(jié)合性和賦值操作符 50
2.6 變量遞增和遞減 51
前綴和后綴 51
2.7 聲明隱式類型的局部變量 52
小結(jié) 53
第2章快速參考 53
第3章 方法和作用域 54
3.1 創(chuàng)建方法 54
3.1.1 聲明方法 54
3.1.2 從方法返回?cái)?shù)據(jù) 55
3.1.3 調(diào)用方法 57
3.2 使用作用域 59
3.2.1 定義局部作用域 60
3.2.2 定義類作用域 60
3.2.3 重載方法 61
3.3 編寫方法 62
3.4 使用可選參數(shù)和具名參數(shù) 68
3.4.1 定義可選參數(shù) 70
3.4.2 傳遞具名參數(shù) 70
3.4.3 消除可選參數(shù)和具名參數(shù)的
歧義 71
小結(jié) 75
第3章快速參考 75
第4章 使用判斷語(yǔ)句 77
4.1 聲明布爾變量 77
4.2 使用布爾操作符 77
4.2.1 理解相等和關(guān)系操作符 78
4.2.2 理解條件邏輯操作符 78
4.2.3 短路求值 79
4.2.4 操作符的優(yōu)先級(jí)和結(jié)合性
總結(jié) 79
4.3 使用if語(yǔ)句做出判斷 80
4.3.1 理解if語(yǔ)句的語(yǔ)法 80
4.3.2 使用代碼塊分組語(yǔ)句 81
4.3.3 嵌套if語(yǔ)句 82
4.4 使用switch語(yǔ)句 87
4.4.1 理解switch語(yǔ)句的語(yǔ)法 88
4.4.2 遵守switch語(yǔ)句的規(guī)則 89
小結(jié) 92
第4章快速參考 92
第5章 使用復(fù)合賦值和循環(huán)語(yǔ)句 94
5.1 使用復(fù)合賦值操作符 94
5.2 使用while語(yǔ)句 95
5.3 編寫for語(yǔ)句 100
5.4 編寫do語(yǔ)句 102
小結(jié) 109
第5章快速參考 109
第6章 管理錯(cuò)誤和異常 111
6.1 處理錯(cuò)誤 111
6.2 嘗試執(zhí)行代碼和捕捉異常 111
6.2.1 未處理的異常 113
6.2.2 使用多個(gè)catch處理程序 113
6.2.3 捕捉多個(gè)異常 114
6.2.4 傳播異常 119
6.3 使用checked和unchecked整數(shù)
運(yùn)算 121
6.3.1 編寫checked語(yǔ)句 122
6.3.2 編寫checked表達(dá)式 122
6.4 引發(fā)異常 125
6.5 使用finally塊 129
小結(jié) 130
第6章快速參考 131
第II部分 理解C#對(duì)象模型第7章 創(chuàng)建并管理類和對(duì)象 135
7.1 理解分類 135
7.2 封裝的目的 135
7.3 定義并使用類 136
7.4 控制可訪問(wèn)性 137
7.4.1 使用構(gòu)造器 138
7.4.2 重載構(gòu)造器 139
7.5 理解靜態(tài)方法和數(shù)據(jù) 146
7.5.1 創(chuàng)建共享字段 147
7.5.2 使用const關(guān)鍵字創(chuàng)建靜態(tài)
字段 148
7.5.3 靜態(tài)類 148
7.5.4 匿名類 150
小結(jié) 151
第7章快速參考 152
第8章 理解值和引用 154
8.1 復(fù)制值類型的變量和類 154
8.2 理解null值和可空類型 159
8.2.1 使用可空類型 160
8.2.2 理解可空類型的屬性 161
8.3 使用ref和out參數(shù) 162
8.3.1 創(chuàng)建ref參數(shù) 162
8.3.2 創(chuàng)建out參數(shù) 163
8.4 計(jì)算機(jī)內(nèi)存的組織方式 165
8.5 System.Object類 167
8.6 裝箱 168
8.7 拆箱 168
8.8 數(shù)據(jù)類型的安全轉(zhuǎn)換 170
8.8.1 is操作符 170
8.8.2 as操作符 170
小結(jié) 172
第8章快速參考 173
第9章 使用枚舉和結(jié)構(gòu)創(chuàng)建值類型 175
9.1 使用枚舉 175
9.1.1 聲明枚舉 175
9.1.2 使用枚舉 175
9.1.3 選擇枚舉文字常量值 176
9.1.4 選擇枚舉的基本類型 177
9.2 使用結(jié)構(gòu) 179
9.2.1 聲明結(jié)構(gòu) 181
9.2.2 理解結(jié)構(gòu)和類的區(qū)別 182
9.2.3 聲明結(jié)構(gòu)變量 183
9.2.4 理解結(jié)構(gòu)的初始化 184
9.2.5 復(fù)制結(jié)構(gòu)變量 187
小結(jié) 191
第9章快速參考 191
第10章 使用數(shù)組 192
10.1 聲明和創(chuàng)建數(shù)組 192
10.1.1 聲明數(shù)組變量 192
10.1.2 創(chuàng)建數(shù)組實(shí)例 193
10.1.3 填充和使用數(shù)組 194
10.1.4 創(chuàng)建隱式類型的數(shù)組 194
10.1.5 訪問(wèn)單獨(dú)的數(shù)組元素 195
10.1.6 遍歷數(shù)組 196
10.1.7 數(shù)組作為方法參數(shù)
和返回值傳遞 197
10.1.8 復(fù)制數(shù)組 198
10.1.9 使用多維數(shù)組 200
10.1.10 創(chuàng)建交錯(cuò)數(shù)組 200
小結(jié) 210
第10章快速參考 210
第11章 理解參數(shù)數(shù)組 212
11.1 回顧重載 212
11.2 使用數(shù)組參數(shù) 213
11.2.1 聲明參數(shù)數(shù)組 214
11.2.2 使用params object[] 216
11.2.3 使用參數(shù)數(shù)組 217
11.3 比較參數(shù)數(shù)組和可選參數(shù) 220
小結(jié) 222
第11章快速參考 222
第12章 使用繼承 223
12.1 什么是繼承 223
12.2 使用繼承 224
12.2.1 復(fù)習(xí)System.Object類 225
12.2.2 調(diào)用基類構(gòu)造器 226
12.2.3 類的賦值 227
12.2.4 聲明新方法 228
12.2.5 聲明虛方法 229
12.2.6 聲明重寫方法 230
12.2.7 理解受保護(hù)的訪問(wèn) 233
12.3 理解擴(kuò)展方法 239
小結(jié) 242
第12章快速參考 243
第13章 創(chuàng)建接口和定義抽象類 245
13.1 理解接口 245
13.1.1 定義接口 246
13.1.2 實(shí)現(xiàn)接口 246
13.1.3 通過(guò)接口來(lái)引用類 248
13.1.4 使用多個(gè)接口 248
13.1.5 顯式實(shí)現(xiàn)接口 249
13.1.6 接口的限制 251
13.1.7 定義和使用接口 251
13.2 抽象類 260
13.3 密封類 262
13.3.1 密封方法 262
13.3.2 實(shí)現(xiàn)并使用抽象類 263
小結(jié) 268
第13章快速參考 269
第14章 使用垃圾回收和資源管理 271
14.1 對(duì)象的生存期 271
14.1.1 編寫析構(gòu)器 272
14.1.2 為什么要使用垃圾回收器 273
14.1.3 垃圾回收器的工作原理 275
14.1.4 慎用析構(gòu)器 275
14.2 資源管理 276
14.2.1 資源清理方法 276
14.2.2 異常安全的資源清理 276
14.2.3 using語(yǔ)句和IDisposable
接口 277
14.2.4 從析構(gòu)器中調(diào)用Dispose
方法 279
14.3 實(shí)現(xiàn)異常安全的資源清理 281
小結(jié) 287
第14章快速參考 288第III部分 用C#定義可擴(kuò)展類型
第15章 實(shí)現(xiàn)屬性以訪問(wèn)字段 293
15.1 使用方法實(shí)現(xiàn)封裝 293
15.2 什么是屬性 295
15.2.1 使用屬性 297
15.2.2 只讀屬性 297
15.2.3 只寫屬性 298
15.2.4 屬性的可訪問(wèn)性 298
15.3 理解屬性的局限性 299
15.4 在接口中聲明屬性 300
15.5 生成自動(dòng)屬性 305
15.6 使用屬性來(lái)初始化對(duì)象 307
小結(jié) 311
第15章快速參考 311
第16章 使用索引器 313
16.1 什么是索引器 313
16.1.1 不用索引器的例子 313
16.1.2 使用索引器的同一個(gè)例子 315
16.1.3 理解索引器的訪問(wèn)器 317
16.1.4 對(duì)比索引器和數(shù)組 317
16.2 接口中的索引器 320
16.3 在Windows應(yīng)用程序中使用
索引器 321
小結(jié) 326
第16章快速參考 327
第17章 泛型概述 328
17.1 object的問(wèn)題 328
17.2 泛型解決方案 331
17.2.1 對(duì)比泛型類與常規(guī)類 333
17.2.2 泛型和約束 334
17.3 創(chuàng)建泛型類 334
17.3.1 二叉樹理論 334
17.3.2 使用泛型構(gòu)造二叉樹類 337
17.4 創(chuàng)建泛型方法 345
17.5 可變性和泛型接口 348
17.5.1 協(xié)變接口 350
17.5.2 逆變接口 351
小結(jié) 353
第17章快速參考 354
第18章 使用集合 355
18.1 什么是集合類 355
18.1.1 List<T>集合類 356
18.1.2 LinkedList<T>集合類 358
18.1.3 Queue<T>集合類 360
18.1.4 Stack<T>集合類 361
18.1.5 Dictionary<TKey, TValue>
集合類 362
18.1.6 SortedList<TKey, TValue>
集合類 363
18.1.7 HashSet<T>集合類 364
18.2 使用集合初始化器 366
18.3 Find方法、謂詞和Lambda
表達(dá)式 366
18.4 比較數(shù)組和集合 368
小結(jié) 372
第18章快速參考 373
第19章 枚舉集合 375
19.1 枚舉集合中的元素 375
19.1.1 手動(dòng)實(shí)現(xiàn)枚舉器 376
19.1.2 實(shí)現(xiàn)IEnumerable接口 380
19.2 使用迭代器來(lái)實(shí)現(xiàn)枚舉器 382
19.2.1 一個(gè)簡(jiǎn)單的迭代器 382
19.2.2 使用迭代器為Tree<TItem>
類定義枚舉器 384
小結(jié) 386
第19章快速參考 386
第20章 分離應(yīng)用程序邏輯并處理
事件 388
20.1 理解委托 388
20.1.1 .NET Framework類庫(kù)的
委托例子 389
20.1.2 自動(dòng)化工廠的例子 391
20.1.3 不使用委托來(lái)實(shí)現(xiàn)工廠 391
20.1.4 使用委托來(lái)實(shí)現(xiàn)工廠 392
20.1.5 聲明和使用委托 394
20.2 Lambda表達(dá)式和委托 402
20.2.1 創(chuàng)建方法適配器 402
20.2.2 Lambda表達(dá)式的形式 403
20.3 啟用事件通知 404
20.3.1 聲明事件 405
20.3.2 訂閱事件 406
20.3.3 取消訂閱事件 406
20.3.4 引發(fā)事件 406
20.4 理解用戶界面事件 407
小結(jié) 414
第20章快速參考 415
第21章 使用查詢表達(dá)式來(lái)查詢內(nèi)存
中的數(shù)據(jù) 418
21.1 什么是語(yǔ)言集成查詢 418
21.2 在C#應(yīng)用程序中使用LINQ 419
21.2.1 選擇數(shù)據(jù) 420
21.2.2 篩選數(shù)據(jù) 423
21.2.3 排序、分組和聚合數(shù)據(jù) 423
21.2.4 聯(lián)接數(shù)據(jù) 425
21.2.5 使用查詢操作符 426
21.2.6 查詢Tree<TItem>對(duì)象中的
數(shù)據(jù) 429
21.2.7 LINQ和推遲求值 434
小結(jié) 438
第21章快速參考 438
第22章 操作符重載 440
22.1 理解操作符 440
22.1.1 操作符的限制 440
22.1.2 重載的操作符 441
22.1.3 創(chuàng)建對(duì)稱操作符 442
22.2 理解復(fù)合賦值 444
22.3 聲明遞增和遞減操作符 445
22.4 比較結(jié)構(gòu)和類中的操作符 446
22.5 定義成對(duì)的操作符 447
22.6 實(shí)現(xiàn)操作符 448
22.7 理解轉(zhuǎn)換操作符 453
22.7.1 提供內(nèi)建轉(zhuǎn)換 454
22.7.2 實(shí)現(xiàn)用戶自定義的轉(zhuǎn)換
操作符 454
22.7.3 再論創(chuàng)建對(duì)稱操作符 455
22.7.4 添加隱式轉(zhuǎn)換操作符 456
小結(jié) 458
第22章快速參考 459
第IV部分 使用C#構(gòu)建Windows 8專業(yè)應(yīng)用第23章 使用任務(wù)提高吞吐量 463
23.1 使用并行處理來(lái)執(zhí)行多任務(wù)處理 463
多核處理器的崛起 464
23.2 用.NET Framework實(shí)現(xiàn)多任務(wù)
處理 465
23.2.1 任務(wù)、線程和線程池 466
23.2.2 創(chuàng)建、運(yùn)行和控制任務(wù) 467
23.2.3 使用Task類實(shí)現(xiàn)并行處理 469
23.2.4 使用Parallel類對(duì)任務(wù)進(jìn)行
抽象 478
23.2.5 什么時(shí)候不要使用
Parallel類 482
23.3 取消任務(wù)和處理異常 484
23.3.1 協(xié)作式取消的原理 484
23.3.2 為Canceled和Faulted任務(wù)
使用延續(xù)任務(wù) 496
小結(jié) 496
第23章快速參考 497
第24章 通過(guò)異步操作提高響應(yīng)速度 499
24.1 實(shí)現(xiàn)異步方法 500
24.1.1 定義異步方法:?jiǎn)栴} 500
24.1.2 定義異步方法:解決方案 502
24.1.3 定義返回值的異步方法 507
24.1.4 異步方法和Windows Runtime
API 508
24.2 用PLINQ進(jìn)行并行數(shù)據(jù)訪問(wèn) 510
24.2.1 用PLINQ增強(qiáng)遍歷集合時(shí)的
性能 511
24.2.2 取消PLINQ查詢 515
24.3 同步對(duì)數(shù)據(jù)的并發(fā)訪問(wèn) 515
24.3.1 鎖定數(shù)據(jù) 518
24.3.2 用于協(xié)調(diào)任務(wù)的同步基元 518
24.3.3 取消同步 521
24.3.4 并發(fā)集合類 521
24.3.5 使用并發(fā)集合和鎖來(lái)實(shí)現(xiàn)
線程安全的數(shù)據(jù)訪問(wèn) 522
小結(jié) 531
第24章快速參考 531
第25章 實(shí)現(xiàn)Windows Store應(yīng)用
程序的用戶界面 534
25.1 什么是Windows Store應(yīng)用 534
25.2 使用空白模板構(gòu)建Windows Store
應(yīng)用 537
25.2.1 實(shí)現(xiàn)可伸縮的用戶界面 539
25.2.2 向用戶界面應(yīng)用樣式 565
小結(jié) 573
第25章快速參考 573
第26章 在Windows Store應(yīng)用程序中
顯示和搜索數(shù)據(jù) 574
26.1 實(shí)現(xiàn)Model-View-ViewModel
模式 574
26.1.1 通過(guò)數(shù)據(jù)綁定顯示數(shù)據(jù) 575
26.1.2 通過(guò)數(shù)據(jù)綁定修改數(shù)據(jù) 580
26.1.3 為ComboBox控件使用
數(shù)據(jù)綁定 584
26.1.4 創(chuàng)建ViewModel 586
26.1.5 向ViewModel添加命令 590
26.2 Windows 8合約 600
26.2.1 實(shí)現(xiàn)搜索合約 600
26.2.2 導(dǎo)航至所選項(xiàng) 609
26.2.3 從搜索超級(jí)按鈕啟動(dòng)程序 612
小結(jié) 614
第26章快速參考 616
第27章 在Windows Store應(yīng)用程序中
訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù) 618
27.1 從數(shù)據(jù)庫(kù)獲取數(shù)據(jù) 618
27.1.1 創(chuàng)建實(shí)體模型 620
27.1.2 創(chuàng)建和使用數(shù)據(jù)服務(wù) 624
27.2 插入、更新和刪除數(shù)據(jù) 635
27.2.1 通過(guò)WCF Data Service插入、
更新和刪除 635
27.2.2 報(bào)告錯(cuò)誤和更新UI 644
小結(jié) 651
第27章快速參考 652