精通 C#, 6/e (Pro C# 5.0 and the .NET 4.5 Framework, 6/e) 精通C#(第6版)

特羅爾森 (Andrew Troelsen)

  • 出版商: 人民郵電出版社
  • 出版日期: 2013-07-01
  • 售價: $954
  • 貴賓價: 9.5$906
  • 語言: 簡體中文
  • 頁數: 1192
  • 裝訂: 平裝
  • ISBN: 7115321817
  • ISBN-13: 9787115321817
  • 相關分類: .NETC#

立即出貨 (庫存 < 3)

買這商品的人也買了...

相關主題

商品描述

《精通C#(第6版)》是C#領域久負盛名的經典著作,深入全面地講解了C#編程語言和.NET平臺的核心內容,並結合大量示例剖析相關概念。

全書分為八部分:C#和.NET平臺、C#核心編程結構、C#面向對象編程、高級C#編程結構、用.NET程序集編程、.NET基礎類庫、WPF和ASP.NET Web Forms。

第6版是對第5版的進一步更新和完善,內容涵蓋了最先進的.NET編程技術和技巧,並準確呈現出C#編程語言的最新變化和.NET 4.5 Framework的新特性。

《精通C#(第6版)》由微軟C# MVP Andrew Troelsen編寫,第6版專門針對C# 5.0和.NET 4.5進行了細緻入微的修訂,是各層次.NET開發人員的必讀之作。

作者簡介

Andrew Troelsen 世界級C#專家,微軟Visual C# MVP。

他是著名的微軟技術諮詢企業Intertech的合夥人和副總裁,該公司的客戶包括微軟、霍尼韋爾、美國國家航空航天局等。

他曾是MSDN網站和MacTech網站.NET技術帖專家,並經常在業界主要技術會議上發表演講和開設技術講座。

他還是公認的C#和.NET暢銷技術書作家。

除本書外,他還著有Pro Expression Blend 4、Pro VB 2008 and the .NET 3.5 Platform和COM and .NET Interoperability等近二十部.NET技術方面的著作。

目錄大綱

第一部分C#與.NET平台
第1章.NET之道
1.1初識.NET平台
1.2 .NET平台構造塊(CLR、CTS和CLS)簡介
1.2.1基礎類庫的作用
1.2.2 C#的優點
1.2. 3託管代碼與非託管代碼
1.3其他支持.NET的編程語言
1.4 .NET程序集概覽
1.4.1 CIL的作用
1.4.2 .NET類型元數據的作用
1.4.3程序集清單的作用
1.5 CTS 
1.5.1 CTS類類型
1.5.2 CTS接口類型
1.5.3 CTS結構類型
1.5.4 CTS枚舉類型
1.5.5 CTS委託類型
1.5.6 CTS類型成員
1.5.7內建的CTS數據類型
1.6 CLS 
1.7 CLR 
1.8程序集/命名空間/類型的區別
1.8.1 Microsoft根命名空間的作用
1.8.2以編程方式訪問命名空間
1.8.3引用外部程序集
1.9使用ildasm.exe探索程序集
1.9.1查看CIL代碼
1.9.2查看類型元數據
1.9.3查看程序集元數據(即清單)
1.10 .NET的平台無關性
1.11 Windows 8應用程序簡介
1.11.1構建Windows 8應用程序
1.11.2 .NET在Windows 8中的作用
1.12小結
第2章構建C#應用程序
2.1 .NET Framework 4.5 SDK的作用
2.2用csc.exe構建C#應用程序
2.2.1指定輸入輸出目標
2.2.2引用外部程序集
2.2.3引用多個外部程序集
2.2.4編譯多個源文件
2.2.5使用C#響應文件
2.3使用Notepad++構建.NET應用程序
2.4使用SharpDevelop構建.NET應用程序
2.5使用Visual C# Express構建.NET應用程序
2.6使用Visual Studio構建.NET應用程序
2.6.1 Visual Studio的獨特功能
2.6.2使用New Project對話框指向.NET Framework 
2.6.3解決方案資源管理器
2.6.4 Class View工具
2.6.5 Object Browser工具
2.6.6集成對代碼重構的支持
2.6.7代碼擴展和圍繞技術
2.6.8可視化Class Designer 
2.6.9集成的.NET Framework 4.5 SDK文檔系統
2.7小結
第二部分C#核心編程結構
第3章C#核心編程結構Ⅰ 
3.1一個簡單的C#程序
3.1.1 Main方法的其他形式
3.1 .2指定應用程序錯誤代碼
3.1.3處理命令行參數
3.1.4使用Visual Studio指定命令行參數
3.2有趣的題外話:System.Environment類的其他成員
3.3 System.Console類
3.3.1使用Console類進行基本的輸入和輸出
3.3.2格式化控制台輸出
3.3.3格式化數值數據
3.3.4在控制台應用程序外格式化數值數據
3.4系統數據類型和相應的C#關鍵字
3.4.1變量聲明和初始化
3.4 .2內建數據類型與new操作符
3.4.3數據類型類的層次結構
3.4.4數值數據類型的成員
3.4.5 System.Boolean的成員
3.4.6 System.Char的成員
3.4.7從字符串數據中解析數值
3.4.8 System.DateTime和System.TimeSpan
3.4.9 System.Numerics.dll程序集
3.5使用字符串數據
3.5.1基本的字符串操作
3.5.2字符串拼接
3.5.3轉義字符
3.5.4定義逐字字符串
3.5.5字符串和相等性
3.5.6字符串是不可變的
3.5.7 System.Text.StringBuilder類型
3.6窄化和寬化數據類型轉換
3.6.1 checked關鍵字
3.6.2設定項目級別的溢出檢測
3.6.3 unchecked關鍵字
3.7隱式類型本地變量
3.7.1隱式類型變量的限制
3.7.2隱式類型數據是強類型數據
3.7.3隱式類型本地變量的用途
3.8 C#迭代結構
3.8.1 for循環
3.8.2 foreach循環
3.8.3 while和do/while循環結構
3.9條件結構和關係/相等操作符
3.9.1 if/else語句
3.9.2關係/相等操作符
3.9.3邏輯操作符
3.9.4 switch語句
3.10小結
第4章C#核心編程結構Ⅱ 
4.1方法和參數修飾符
4.1.1默認的參數傳遞行為
4.1.2 out修飾符
4.1.3 ref修飾符
4.1.4 params修飾符
4.1.5定義可選參數
4.1.6使用命名參數調用方法
4.1.7成員重載
4.2 C#數組
4.2.1 C#數組初始化語法
4.2.2隱式類型本地數組
4.2.3定義object數組
4.2.4使用多維數組
4.2.5數組作為參數(和返回值)
4.2.6 System.Array基類
4.3枚舉類型
4.3.1控制枚舉的底層存儲
4.3.2聲明枚舉變量
4.3.3 System.Enum類型
4.3.4動態獲取枚舉的名稱/值對
4.4結構類型
4.5值類型和引用類型
4.5.1值類型、引用類型和賦值操作符
4.5.2包含引用類型的值類型
4.5.3按值傳遞引用類型
4.5.4按引用傳遞引用類型
4.5.5值類型和引用類型:最後的細節
4.6 C#可空類型
4.6. 1使用可空類型
4.6.2 ??操作符
4.7小結
第三部分C#面向對象編程
第5章封裝
5.1 C#類類型
5.2構造函數
5.2.1默認構造函數的作用
5.2.2定義自定義的構造函數
5.2.3再談默認構造函數
5.3 this關鍵字的作用
5.3.1使用this進行串聯構造函數調用
5.3.2觀察構造函數流程
5.3.3再談可選參數
5.4 static關鍵字
5.4.1定義靜態數據
5.4.2定義靜態方法
5.4.3定義靜態構造函數
5.4.4定義靜態類
5.5定義OOP的支柱
5.5.1封裝的作用
5.5.2繼承的作用
5.5.3多態的作用
5.6 C#訪問修飾符
5.6.1默認的訪問修飾符
5.6.2訪問修飾符和嵌套類型
5.7第一個支柱:C#的封裝服務
5.7.1使用傳統的訪問方法和修改方法執行封裝
5.7.2使用.NET屬性進行封裝
5.7.3使用類的屬性
5.7.4只讀和只寫屬性
5.7.5靜態屬性
5.8自動屬性
5.8 .1與自動屬性交互
5.8.2關於自動屬性和默認值
5.9對像初始化語法
5.9.1使用初始化語法調用自定義構造函數
5.9.2初始化內部類型
5.10常量數據
5.10.1只讀字段
5.10.2靜態只讀字段
5.11分部類型
5.12小結
第6章繼承和多態
6.1繼承的基本機制
6.1.1指定既有類的父類
6.1.2多個基類
6.1.3 sealed關鍵字
6.2回顧Visual Studio類關係圖
6.3 OOP的第二個支柱:繼承
6.3.1使用base關鍵字控制基類的創建
6.3.2家族的秘密:protected關鍵字
6.3.3增加密封類
6.4包含/委託編程
6.5 OOP的第三個支柱:C#的多態支持
6.5.1 virtual和override關鍵字
6.5. 2使用Visual Studio IDE重寫虛方法
6.5.3密封虛成員
6.5.4抽像類
6.5.5構建多態接口
6.5.6成員投影
6.6基類/派生類的轉換規則
6.6.1 C#的as關鍵字
6.6 .2 C#的is關鍵字
6.7超級父類:System.Object 
6.7.1重寫System.Object.ToString 
6.7.2重寫System.Object.Equals 
6.7.3重寫System.Object.GetHashCode 
6.7.4測試修改後的Person類
6.7.5 System.Object的靜態成員
6.8小結
第7章結構化異常處理
7.1錯誤、bug與異常
7.2 .NET異常處理的作用
7.2.1 .NET異常處理的四要素
7.2.2 System.Exception基類
7.3最簡單的例子
7.3.1引發普通的異常
7.3.2捕獲異常
7.4配置異常的狀態
7.4.1 TargetSite屬性
7.4.2 StackTrace屬性
7.4.3 HelpLink屬性
7.4.4 Data屬性
7.5系統級異常
7.6應用程序級異常
7.6.1構建自定義異常,第一部分
7.6.2構建自定義異常,第二部分
7.6.3構建自定義異常,第三部分
7.7處理多個異常
7.7.1通用的catch語句
7.7.2再次引發異常
7.7.3內部異常
7.7.4 finally塊
7.8誰在引發什麼異常
7.9未處理異常的後果
7.10使用Visual Studio調試未處理的異常
7.11小結
第8章接口
8.1接口類型
8.2定義自定義接口
8.3實現接口
8.4在對象級別調用接口成員
8.4.1獲取接口引用:as關鍵字
8.4.2獲取接口引用:is關鍵字
8.5接口作為參數
8.6接口作為返回值
8.7接口類型數組
8.8使用Visual Studio實現接口
8.9顯式接口實現
8.10設計接口層次結構
8.11構建可枚舉類型(IEnumerable和IEnumerator)
8.11.1用yield關鍵字構建迭代器方法
8.11.2構建命名迭代器
8.12構建可克隆的對象(ICloneable)
8.13構建可比較的對象(IComparable )
8.13.1指定多個排序順序
8.13.2自定義屬性、自定義排序類型
8.14小結
第四部分高級C#編程結構
第9章集合與泛型
9.1集合類的動機
9.1.1 System.Collections命名空間
9.1.2 System.Collections.Specialized命名空間
9.2非泛型集合的問題
9.2.1性能問題
9.2.2類型安全問題
9.2.3初識泛型集合
9.3泛型類型參數的作用
9.3.1為泛型類/結構指定類型參數
9.3.2為泛型成員指定類型參數
9.3.3為泛型接口指定類型參數
9.4 System.Collections.Generic命名空間
9.4.1集合初始化語法
9.4.2使用List類
9.4.3使用Stack類
9.4.4使用Queue類
9.4.5使用SortedSet類
9.5 System.Collections.ObjectModel命名空間
9.6創建自定義泛型方法
9.7創建自定義泛型結構和類
9.8類型參數的約束
9.8.1使用where關鍵字的示例
9.8.2操作符約束的不足
9.9小結
第10章委託、事件和Lambda表達式
10.1 .NET委託類型
10.1.1在C#中定義委託類型
10.1.2 System.MulticastDelegate與System.Delegate基類
10.2最簡單的委託示例
10.3使用委託發送對象狀態通知
10.3.1支持多路廣播
10.3.2從委託的調用列表中移除成員
10.3.3方法組轉換語法
10.4泛型委託
10.5 C#事件
10.5.1 event關鍵字
10.5.2揭開事件的神秘面紗
10.5.3監聽傳入的事件
10.5.4使用Visual Studio簡化事件註冊
10.5.5創建自定義的事件參數
10.5 .6泛型EventHandler委託
10.6 C#匿名方法
10.7 Lambda表達式
10.7.1剖析Lambda表達式
10.7.2使用多個語句處理參數
10.7.3含有多個(或零個)參數的Lambda表達式
10.7.4使用Lambda表達式重新編寫CarEvents示例
10.8小結
第11章高級C#語言特性
11.1索引器方法
11.1.1使用字符串值索引對象
11.1.2重載索引器方法
11.1.3多維的索引器
11.1.4在接口類型上定義索引器
11.2操作符重載
11.2.1重載二元操作符
11.2.2 +=與—=操作符
11.2.3重載一元操作符
11.2.4重載相等操作符
11.2.5重載比較操作符
11.2.6操作符重載的最後思考
11.3自定義類型轉換
11.3.1回顧:數值轉換
11.3.2回顧:相關的類類型間的轉換
11.3.3創建自定義轉換例程
11.3.4 Square類型的其他顯式轉換
11.3.5定義隱式轉換例程
11.4擴展方法
11.4.1定義擴展方法
11.4.2在實例層次上調用擴展方法
11.4.3導入擴展方法
11.4.4擴展方法的智能感知
11.4.5擴展實現了指定接口的類型
11.5匿名類型
11.5.1定義匿名類型
11.5.2匿名類型的內部表示方式
11.5.3方法ToString和GetHashCode的實現
11.5.4匿名類型的相等語義
11.5.5包含匿名類型的匿名類型
11.6指針類型
11.6.1 unsafe關鍵字
11.6.2 *和&操作符
11.6.3不安全(與安全)交換功能
11.6.4通過指針訪問字段
11.6.5 stackalloc關鍵字
11.6.6使用fixed關鍵字固定類型
11.6.7 sizeof關鍵字
11.7小結
第12章LINQ to Object 
12.1 LINQ特有的編程結構
12.1.1隱式類型本地變量
12.1.2對象和集合初始化語法
12.1.3 Lambda表達式
12.1.4擴展方法
12.1.5匿名類型
12.2 LINQ的作用
12.2.1 LINQ表達式是強類型的
12.2.2核心LINQ程序集
12.3將LINQ查詢應用於原始數組
12.3.1再一次,不使用LINQ 
12.3.2反射LINQ結果集
12.3.3 LINQ和隱式類型本地變量
12.3.4 LINQ和擴展方法
12.3.5延遲執行的作用
12.3.6立即執行的作用
12.4返回LINQ查詢的結果
12.5將LINQ查詢應用到集合對象
12.5.1訪問包含的子對象
12.5.2將LINQ查詢應用於非泛型集合
12.5.3使用OfType篩選數據
12.6 C# LINQ查詢操作符
12.6.1基本的選擇語法
12.6.2獲取數據子集
12.6.3投影新數據類型
12.6.4使用Enumerable獲取總數
12.6.5反轉結果集
12.6.6對錶達式進行排序
12.6.7維恩圖工具
12.6.8移除重複
12.6.9 LINQ聚合操作
12.7 LINQ查詢語句的內部表示
12.7.1用查詢操作符建立查詢表達式(複習)
12.7.2使用Enumerable類型和Lambda表達式來建立查詢表達式
12.7. 3使用Enumerable類型和匿名方法來建立查詢表達式
12.7.4用Enumerable類型和原始委託建立查詢表達式
12.8小結
第13章對象的生命週期
13.1類、對象和引用
13.2對像生命週期的基礎
13.2.1 CIL的new指令
13.2.2將對象引用設置為空
13.3應用程序根的作用
13.4對象的代
13.5 .NET 1.0至.NET 3.5的並發垃圾回收
13.6 .NET 4.0及後續版本
13.7 System.GC類型
13.8構建可終結對象
13.8.1重寫System.Object.Finalize
13.8.2終結過程的細節
13.9構建可處置對象
13.10構建可終結類型和可處置類型
13.11延遲對象實例化
13.12小結
第五部分用.NET程序集編程
第14章.NET程序集入門
14.1定義自定義命名空間
14.1.1使用完全限定名解決命名衝突
14.1.2使用別名解決命名衝突
14.1.3創建嵌套的命名空間
14.1.4 Visual Studio的默認命名空間
14.2 .NET程序集的作用
14.2.1程序集促進代碼重用
14.2.2程序集確定類型邊界
14.2.3程序集是可版本化的單元
14.2.4程序集是自描述的
14.2.5程序集是可配置的
14.3 .NET程序集的格式
14.3.1 Windows文件首部
14.3.2 CLR文件首部
14.3.3 CIL代碼、類型元數據和程序集清單
14.3.4可選的程序集資源
14.4構建和使用自定義類庫
14.4.1清單
14.4.2 CIL 
14.4.3類型元數據
14.4.4構建C#客戶端應用程序
14.4.5構建Visual Basic客戶端應用程序
14.4.6實現跨語言繼承
14.5私有程序集
14.5.1私有程序集的標識
14.5.2探測過程
14.5.3配置私有程序集
14.5.4 App.Config文件
14.6共享程序集
14.6.1全局程序集緩存
14.6.2強名稱
14.6.3在命令行生成強名稱
14.6.4使用Visual Studio為程序集賦予強名稱
14.6.5在GAC中安裝強名稱的程序集
14.7使用共享程序集
14.8配置共享程序集
14.8.1凍結當前的共享程序集
14.8.2構建共享程序集2.0.0.0版本
14.8.3動態重定向到共享程序集的特定版本
14.9發行者策略程序集
14.10元素
14.11 System .Configuration命名空間
14.12配置文件架構文檔
14.13小結
第15章類型反射、晚期綁定和基於特性的編程
15.1類型元數據的必要性
15.1.1查看(部分)EngineState枚舉的元數據
15.1.2查看(部分)Car類型的元數據
15.1.3研究TypeRef 
15.1.4記錄定義的程序集
15.1.5記錄引用的程序集
15.1.6記錄字符串字面量
15.2反射
15.2.1 System.Type類
15.2.2使用System.Object.GetType得到Type引用
15.2.3使用typeof得到Type引用
15.2.4使用System.Type.GetType得到Type引用
15.3構建自定義的元數據查看器
15.3.1反射方法
15.3.2反射字段和屬性
15.3.3反射實現的接口
15.3. 4顯示其他信息
15.3.5實現Main 
15.3.6反射泛型類型
15.3.7反射方法參數和返回值
15.4動態加載程序集
15.5反射共享程序集
15.6晚期綁定
15.6.1 System.Activator類
15.6.2調用沒有參數的方法
15.6.3調用有參數的方法
15.7 .NET特性的作用
15.7.1特性的使用者
15.7.2在C#中使用特性
15.7.3 C#特性簡化符號
15.7.4為特性指定構造參數
15.7.5 Obsolete特性
15.8構建自定義特性
15.8.1應用自定義特性
15.8.2命名屬性語法
15.8.3限制特性使用
15.9程序集級別特性
15.10使用早期綁定反射特性
15.11使用晚期綁定反射特性
15.12反射、晚期綁定和自定義特性的使用背景
15.13構建可擴展的應用程序
15.13.1構建CommonSnappable—Types.dll 
15.13.2構建C#插件
15.13.3構建Visual Basic插件
15.13.4構建可擴展的Windows Forms應用程序
15.14小結
第16章動態類型和動態語言運行時
16.1 dynamic關鍵字的作用
16.1.1調用動態聲明的數據的成員
16.1.2 Microsoft.CSharp.dll程序集的作用
16.1.3 dynamic關鍵字的作用域
16.1.4 dynamic關鍵字的限制
16.1.5 dynamic關鍵字的實際用途
16.2 DLR的作用
16.2.1表達式樹的作用
16.2.2 System.Dynamic命名空間的作用
16.2.3表達式樹的動態運行時查找
16.3使用動態類型簡化後期綁定調用
16.4使用動態數據簡化COM互操作
16.4.1主互操作程序集的作用
16.4.2嵌入互操作元數據
16.4.3普通COM互操作的難點
16.5使用C#動態數據進行COM互操作
16.6不使用C#動態數據進行COM互操作
16.7小結
第17章進程、應用程序域和對像上下文
17.1 Windows進程的作用
17.2 .NET平台下與進程進行交互
17.2.1列舉運行中的進程
17.2. 2特定的進程
17.2.3進程的線程集合
17.2.4進程中的模塊集合
17.2.5以編程方式啟動或結束進程
17.2.6使用ProcessStartInfo類控制進程的啟動
17.3 .NET應用程序域
17.4與默認應用程序域進行交互
17.4.1枚舉加載的程序集
17.4.2接收程序集加載通知
17.5創建新的應用程序域
17.5.1在自定義應用程序域中加載程序集
17.5.2以編程方式卸載應用程序域
17.6對像上下文邊界
17.6.1上下文靈活和上下文綁定類型
17.6.2定義上下文綁定對象
17.6.3研究對象的上下文
17.7進程、應用程序域和上下文小結
17.8小結
第18章CIL和動態程序集的作用
18.1學習CIL語法的原因
18.2 CIL指令、特性和操作碼
18.2.1 CIL指令的作用
18.2 .2 CIL特性的作用
18.2.3 CIL操作碼的作用
18.2.4區別CIL操作碼和CIL助記符
18.3入棧和出棧:CIL基於棧的本質
18.4正反向工程
18.4.1 CIL代碼標籤的作用
18.4.2與CIL交互:修改*.il文件
18.4.3使用ilasm.exe編譯CIL代碼
18.4.4 peverify.exe的作用
18.5 CIL指令和特性
18.5.1在CIL中指定外部引用程序集
18.5.2在CIL中定義當前程序集
18.5.3在CIL中定義命名空間
18.5.4在CIL中定義類類型
18.5.5在CIL中定義和實現接口
18.5.6在CIL中定義結構
18.5.7在CIL中定義枚舉
18.5.8在CIL中定義泛型
18.5.9編譯CILTypes.il文件
18.6 .NET基礎類庫、C#和CIL數據類型的映射
18.7在CIL中定義類型成員
18.7.1在CIL中定義數據字段
18.7.2在CIL中定義類型的構造函數
18.7.3在CIL中定義屬性
18.7.4定義成員參數
18.8剖析CIL操作碼
18.8.1 . maxstack指令
18.8.2在CIL中聲明本地變量
18.8.3在CIL中映射參數到本地變量
18.8.4 this隱式引用
18.8.5在CIL中使用循環結構
18.9使用CIL構建.NET程序集
18.9.1構建CILCars.dll 
18.9.2構建CILCarClient.exe 
18.10動態程序集
18.10.1 System.Reflection.Emit命名空間
18.10.2 System.Reflection.Emit.ILGenerator的作用
18.10.3產生動態的程序集
18.10.4產生程序集和模塊集
18.10.5 ModuleBuilder類型的作用
18.10.6產生HelloClass類型和字符串成員變量
18.10.7產生構造函數
18.10.8產生SayHello方法
18.10.9使用動態產生的程序集
18.11小結
第六部分.NET基礎類庫
第19章多線程、並行和異步編程
19.1進程、應用程序域、上下文及線程之間的關係
19.1.1並發問題
19.1.2線程同步的作用
19.2 .NET委託的簡短回顧
19.3委託的異步性
19.3.1 BeginInvoke和EndInvoke方法
19.3.2 System.IAsyncResult接口
19.4異步調用方法
19.4.1同步調用線程
19.4.2 AsyncCallback委託的作用
19.4.3 AsyncResult類的作用
19.4.4傳遞和接收自定義狀態數據
19.5 System.Threading命名空間
19.6 System.Threading.Thread類
19.6.1獲得當前執行線程的統計信息
19.6.2 Name屬性
19.6.3 Priority屬性
19.7手工創建次線程
19.7.1使用ThreadStart委託
19.7. 2使用ParameterizedThreadStart委託
19.7.3 AutoResetEvent類
19.7.4前台線程和後台線程
19.8並發問題
19.8.1使用C#的lock關鍵字進行同步
19.8.2使用System.Threading.Monitor類型進行同步
19.8.3使用System.Threading.Interlocked類型進行同步
19.8.4使用[Synchronization]特性進行同步
19.9使用TimerCallback編程
19.10 CLR線程池
19.11使用任務並行庫進行並行編程
19.11.1任務並行庫API 
19.11.2 Parallel類的作用
19.11.3使用Parallel類的數據並行
19.11.4在次線程中訪問UI元素
19.11.5 Task類
19.11 .6處理取消請求
19.11.7使用並行類的任務並行
19.12並行LINQ查詢(PLINQ)
19.12.1使用PLINQ查詢
19.12.2取消PLINQ查詢
19.13 .NET 4.5下的異步調用
19.13.1 C# async和await關鍵字初探
19.13.2異步方法的命名約定
19.13.3返回void的異步方法
19.13.4具有多個await的異步方法
19.13.5用async/await改進AddWithThreads示例
19.14小結
第20章文件輸入輸出和對象序列化
20.1研究System.IO命名空間
20.2 Directory(Info)和File(Info)類型
20.3使用DirectoryInfo類型
20.3.1使用DirectoryInfo類型枚舉出文件
20.3.2使用DirectoryInfo類型創建子目錄
20.4使用Directory類型
20.5使用DriveInfo類類型
20.6使用FileInfo類
20.6.1 FileInfo.Create方法
20.6.2 FileInfo.Open方法
20.6.3 FileInfo.OpenRead和FileInfo.OpenWrite方法
20.6.4 FileInfo.OpenText方法
20.6.5 FileInfo .CreateText和FileInfo.AppendText方法
20.7使用File類型
20.8 Stream抽像類
20.9使用StreamWriter和StreamReader類型
20.9.1寫文本文件
20.9.2讀文本文件
20.9.3直接創建StreamWriter/StreamReader類型
20.10使用StringWriter和StringReader類型
20.11使用BinaryWriter和BinaryReader 
20.12以編程方式“觀察”文件
20.13對象序列化
20.14為序列化配置對象
20.14.1定義可序列化的類型
20.14.2公共字段、私有字段和公共屬性
20.15選擇序列化格式化程序
20.15.1 IFormatter和IRemoting—Formatting接口
20.15.2在格式化程序中的類型保真
20.16使用BinaryFormatter序列化對象
20.17使用SoapFormatter序列化對象
20.18使用XmlSerializer序列化對象
20.19序列化對象集合
20.20自定義Soap/Binary序列化過程
20.20.1深入了解對象序列化
20.20.2使用ISerializable自定義序列化
20.20.3使用特性定制序列化
20.21小結
第21章ADO.NET之一:連接層
21.1 ADO.NET的宏觀定義
21.2 ADO .NET數據提供程序
21.2.1微軟提供的ADO.NET數據提供程序
21.2.2關於System.Data.Oracle—Client.dll 
21.2.3選擇第三方的數據提供程序
21.3其他的ADO.NET命名空間
21.4 System.Data命名空間的類型
21.4.1 IDbConnection接口的作用
21.4.2 IDbTransaction接口的作用
21.4.3 IDbCommand接口的作用
21.4.4 IDbDataParameter和IDataParameter接口的作用
21.4.5 IDbDataAdapter和IDataAdapter接口的作用
21.4.6 IDataReader和IDataRecord接口的作用
21.5使用接口的抽像數據提供程序
21.6創建AutoLot數據庫
21.6.1創建Inventory表
21.6.2為Inventory表添加測試記錄
21.6.3編寫GetPetName存儲過程
21.6. 4創建Customers和Orders表
21.6.5可視化創建表關係
21.7 ADO.NET數據提供程序工廠模型
21.7.1完整的數據提供程序工廠的例子
21.7.2數據提供程序工廠模型的潛在缺陷
21.7.3元素
21.8 ADO .NET的連接層
21.8.1使用連接對象
21.8.2使用ConnectionStringBuilder對象
21.8.3使用命令對象
21.9使用數據讀取器
21.10構建可重用的數據訪問庫
21.10.1增加連接邏輯
21.10.2增加插入邏輯
21.10.3增加刪除邏輯
21.10.4增加更新邏輯
21.10.5增加選擇邏輯
21.10.6使用參數化的命令對象
21.10.7執行存儲過程
21.11創建控制台UI前端
21.11.1實現Main方法
21.11.2實現ShowInstructions方法
21.11.3實現ListInventory方法
21.11.4實現DeleteCar方法
21.11.5實現InsertNewCar方法
21.11.6實現UpdateCarPetName方法
21.11.7實現LookUpPetName 
21.12數據庫事務
21.12.1 ADO.NET事務對象的主要成員
21.12.2為AutoLot數據庫添加CreditRisks表
21.12.3為InventoryDAL添加事物方法
21.12.4測試數據庫事務
21.13小結
第22章ADO. NET之二:斷開連接層
22.1 ADO.NET斷開連接層
22.2 DataSet的作用
22.2.1 DataSet的主要屬性
22.2.2 DataSet的主要方法
22.2.3構建DataSet 
22.3使用DataColumn 
22.3.1構建DataColumn 
22.3.2啟用自增列
22.3.3把DataColumn對象加入DataTable 
22.4使用DataRow 
22.4.1 RowState屬性
22.4.2 DataRowVersion屬性
22.5使用DataTable 
22.5.1將DataTable插入到DataSet中
22.5.2獲取DataSet中的數據
22.5.3使用DataTableReader對象處理DataTable 
22.5.4序列化DataTable/DataSet對象為XML 
22.5.5以二進制格式序列化Data—Table/DataSet對象
22.6將DataTable對象綁定到用戶界面
22.6.1從泛型List合成DataTable 
22.6.2從DataTable中刪除行
22.6.3根據篩選條件選擇行
22.6.4在DataTable中更新行
22.6.5使用DataView類型
22.7使用數據適配器
22.7.1一個簡單的數據適配器示例
22.7.2映射數據庫名稱為友好名稱
22.8向AutoLotDAL.dll添加斷開連接功能
22.8.1定義初始類類型
22.8.2使用SqlCommandBuilder來配置數據適配器
22.8.3實現GetAllInventory 
22.8.4實現UpdateInventory 
22.8.5設置版本號
22.8.6測試非連接的功能
22.9多表DataSet對象和數據關係
22.9.1建立數據適配器
22.9.2建立表間關係
22.9.3更新Database表
22.9.4在關聯表中切換
22.10 Windows Forms數據庫設計器工具
22.10.1可視化設計DataGridView 
22.10.2生成的App.config文件
22.10.3強類型的DataSet 
22.10.4強類型的DataTable 
22.10.5強類型的DataRow 
22.10.6強類型的數據適配器
22.10.7完成Windows Forms應用程序
22.11將強類型的數據庫代碼隔離到類庫中
22.11.1查看生成的代碼
22.11.2用生成的代碼選擇數據
22.11.3用生成的代碼插入數據
22.11.4用生成的代碼刪除數據
22.11.5用生成的代碼調用存儲過程
22.12 LINQ to DataSet 
22.12.1 DataSet Extensions庫的作用
22.12.2獲取與LINQ兼容的DataTable 
22.12.3 DataRowExtensions.Field—擴展方法的作用
22.12.4從LINQ查詢中生成新的DataTable 
22.13小結
第23章ADO.NET之三:Entity Framework 
23.1 Entity Framework的作用
23.1.1實體的作用
23.1.2 Entity Framework的基礎知識
23.2創建和分析EDM 
23.3對概念模型進行編程
23.4 AutoLotDAL 4.0版,加入實體
23.4.1導航屬性的作用
23.4.2在LINQ to Entity查詢中使用導航屬性
23.4.3調用存儲過程
23.5將數據實體綁定到Windows Forms GUI 
23.6展望. NET數據訪問API的未來
23.7小結
第24章LINQ to XML簡介
24.1兩個XML API的故事
24.1.1更優秀的DOM——LINQ to XML
24.1.2更優秀的LINQ to XML——VB字面量語法
24.2 System.Xml.Linq命名空間的成員
24.2.1 LINQ to XML的軸方法
24.2.2奇妙的XName和XNamespace 
24.3使用XElement和XDocument 
24.3.1從數組和容器中生成文檔
24.3.2加載和解析XML內容
24.4在內存中操作XML文檔
24.4.1構建LINQ to XML應用程序的UI 
24.4.2引入Inventory.xml文件
24.4.3定義LINQ to XML輔助類
24.4.4將UI組裝到輔助類
24.5小結
第25章WCF 
25.1各種分佈式計算API 
25.1.1 DCOM的作用
25.1.2 COM+/企業服務的作用
25.1.3 MSMQ的作用
25.1.4 .NET Remoting的作用
25.1.5 XML Web服務的作用
25.2 WCF的作用
25.2.1 WCF特性概覽
25.2.2 SOA概覽
25.2.3 WCF概要
25.3 WCF核心程序集
25.4 Visual Studio WCF項目模板
25.5 WCF應用程序的基本構成
25.6 WCF的ABC 
25.6.1 WCF契約
25.6.2 WCF綁定
25.6.3 WCF地址
25.7構建WCF服務
25.7.1 [ServiceContract]特性
25.7.2 [OperationContract]特性
25.7.3作為操作契約的服務類型
25.8承載WCF服務
25.8.1在App.config文件中創建ABC 
25.8.2針對ServiceHost類型進行編程
25.8.3指定庫地址
25.8.4 ServiceHost類型的功能
25.8.5元素的細節
25.8.6啟用元數據交換
25.9構建WCF客戶端應用程序
25.9.1使用svcutil.exe生成代理代碼
25.9.2使用Visual Studio生成代理代碼
25.9.3配置基於TCP的綁定
25.10簡化配置設置
25.10.1使用默認終結點
25.10 .2使用多重綁定公開單獨的WCF服務
25.10.3修改WCF綁定的設置
25.10.4使用默認的MEX行為配置
25.10.5刷新客戶端代理和選擇綁定
25.11使用WCF服務庫項目模板
25.11.1構建簡單的Math服務
25.11.2使用WcfTestClient.exe測試WCF服務
25.11.3使用SvcConfigEditor.exe修改配置文件
25.12以Windows服務承載WCF服務
25.12.1在代碼中指定ABC 
25.12.2啟用MEX 
25.12.3創建Windows服務安裝程序
25.12.4安裝Windows服務
25.13從客戶端異步調用服務
25.14定義WCF數據契約
25.14.1使用Web相關的WCF服務項目模板
25.14.2實現服務契約
25.14. 3 *.svc文件的作用
25.14.4更新web.config文件
25.14.5測試服務
25.15小結
第26章Windows Workflow Foundation簡介
26.1定義業務流程
26.2構建簡單的工作流
26.3 Workflow運行時
26.3.1使用WorkflowInvoker承載工作流
26.3.2使用WorkflowApplication承載工作流
26.3.3第一個工作流示例回顧
26.4檢查Workflow中的活動
26.4.1控制流活動
26.4.2流程圖活動
26.4.3消息傳遞活動
26.4.4狀態機活動
26.4.5運行時活動與基元活動
26.4.6事務活動
26.4.7集合活動和錯誤處理活動
26.5構建流程圖工作流
26.5.1在流程圖中連接活動
26.5.2使用InvokeMethod活動
26.5.3定義工作流變量
26.5.4使用FlowDecision活動
26.5.5使用TerminateWorkflow活動
26.5.6構建“true”條件
26.5.7使用ForEach活動
26.5.8完成應用程序
26.5.9我們做了什麼
26.6在專門的DLL中構建Squence工作流
26.6.1定義初始化項目
26.6.2引入程序集和命名空間
26.6.3定義工作流參數
26.6.4定義工作流變量
26.6.5使用Assign活動
26.6.6使用If和Switch活動
26.6.7構建自定義代碼活動
26.7使用工作流庫
26.8小結
第七部分WPF 
第27章WPF和XAML
27.1 WPF背後的動機
27.1.1統一多種不同的API 
27.1.2通過XAML將關注點分離
27.1.3提供優化的呈現模型
27.1.4簡化複雜的UI編程
27.2各種形式的WPF應用程序
27.2. 1傳統的桌面應用程序
27.2.2基於導航的WPF應用程序
27.2.3 XBAP應用程序
27.2.4 WPF/Silverlight關係
27.3 WPF程序集
27.3.1 Application類的作用
27.3.2 Window類的作用
27.4創建不使用XAML的WPF應用程序
27.4.1創建強類型的Window類
27.4.2創建簡單的用戶界面
27.4.3與應用程序級別的數據交互
27.4.4處理Window對象的關閉
27.4.5攔截鼠標事件
27.4.6攔截鍵盤事件
27.5僅使用XAML構建WPF應用程序
27.5.1用XAML定義窗體對象
27.5.2用XAML定義應用對象
27.5.3通過msbuild.exe處理XAML文件
27.6將標記轉換為.NET程序集
27.6.1將窗口XAML標記映射到C#代碼
27.6.2 BAML的作用
27.6.3將應用程序XAML標記映射到C#代碼
27.6.4 XAML到程序集的過程摘要
27.7 WPF XAML語法
27.7.1 Kaxaml 
27.7.2 XAML XML命名空間和XAML關鍵字
27.7.3控制類和成員變量的可見性
27.7.4 XAML元素、XAML特性和類型轉換器
27.7.5 XAML屬性元素語法
27.7.6 XAML附加屬性
27.7.7 XAML標記擴展
27.8使用代碼隱藏文件構建WPF應用程序
27.8. 1為MainWindow類添加代碼文件
27.8.2為MyApp類添加代碼文件
27.8.3用msbuild.exe處理代碼文件
27.9使用Visual Studio構建WPF應用程序
27.9.1 WPF項目模板
27.9.2工具箱和XAML設計器/編輯器
27.9.3使用Properties窗口設置屬性
27.9.4使用Properties窗口處理事件
27.9.5在XAML編輯器中處理事件
27.9.6 Document Outline窗口
27.9.7查看自動生成的代碼文件
27.10使用Visual Studio構建自定義XAML編輯器
27.10.1設計窗口的GUI 
27.10.2實現Loaded事件
27.10.3實現按鈕的Click事件
27.10.4實現Closed事件
27.10.5測試應用程序
27.10.6探索WPF文檔
27.11小結
第28章使用WPF控件編程
28.1 WPF核心控件概述
28.1.1 WPF Ink控件
28.1.2 WPF Document控件
28.1.3 WPF公共對話框
28.1.4文檔中的細節
28.2 Visual Studio WPF設計器
28.2.1在Visual Studio中使用WPF控件
28.2.2使用Document Outline編輯器
28.3使用面板控制內容佈局
28.3.1在Canvas面板中放置內容
28.3.2在WrapPanel面板中放置內容
28.3.3在StackPanel面板中放置內容
28.3.4在Grid面板中放置內容
28.3.5在DockPanel面板中放置內容
28.3.6啟用Panel類型的滾動功能
28.3.7使用Visual Studio設計器配置Panel 
28.4使用嵌套面板構建窗口框架
28.4.1構建菜單系統
28.4.2構建工具條
28.4.3構建狀態條
28.4.4完成UI設計
28.4.5實現MouseEnter/MouseLeave事件處理程序
28.4.6實現拼寫檢查邏輯
28.5 WPF命令
28.5.1內置的命令對象
28.5.2將命令連接到Command屬性
28.5.3將命令連接到任意行為
28.5.4使用Open和Save命令
28.6深入了解WPF API和控件
28.7構建Ink API選項卡
28.7.1設計工具條
28.7.2 RadioButton控件
28.7.3處理Ink API選項卡的事件
28.7.4 InkCanvas控件
28.7.5 ComboBox控件
28.7.6保存、加載和清除InkCanvas數據
28.8 Documents API 
28.8.1塊元素和內聯元素
28.8.2文檔佈局管理器
28.9構建Documents選項卡
28.9 .1使用代碼填充FlowDocument 
28.9.2啟用批註和便簽
28.9.3保存和加載流文檔
28.10 WPF數據綁定模型
28.10.1構建Data Binding選項卡
28.10.2使用Visual Studio建立數據綁定
28.10.3 DataContext屬性
28.10.4使用IValueConverter進行數據轉換
28.10.5在代碼中建立數據綁定
28.10.6構建DataGrid選項卡
28.11小結
第29章WPF圖形呈現服務
29.1理解WPF的圖形呈現服務
29.2使用形狀呈現圖形數據
29.2.1在畫布中添加矩形、橢圓形和線條
29.2.2在畫布中移除矩形、圓形和線條
29.2.3折線和多邊形
29.2.4路徑
29.3 WPF畫刷和畫筆
29.3.1使用Visual Studio配置畫刷
29.3.2在代碼中配置畫刷
29.3.3配置畫筆
29.4圖形變換
29.4.1變換概覽
29.4.2變換Canvas數據
29.5使用Visual Studio變換編輯器
29.5 .1構建初始佈局
29.5.2在設計時應用變換
29.5.3在代碼中變換畫布
29.6使用繪圖和幾何圖形呈現圖形數據
29.6.1使用幾何圖形構建DrawingBrush 
29.6.2用DrawingBrush進行繪畫
29.6.3在DrawingImage中使用繪圖類型
29.7 Expression Design的作用
29.7.1將示例設計文件導出為XAML 
29.7.2將圖像數據導入WPF對象
29.7.3與熊共舞
29.8使用可視化層呈現圖形數據
29.9小結
第30章WPF資源、動畫和样式
30.1理解WPF資源系統
30.2使用對象(邏輯)資源
30.2.1 Resources屬性的作用
30.2.2定義窗口級別的資源
30.2.3 {StaticResource}標記擴展
30.2.4 {DynamicResource}標記擴展
30.2.5應用程序級別的資源
30.2.6定義合併的資源字典
30.2.7定義只含資源的程序集
30.3理解WPF動畫服務
30.3.1動畫類型的作用
30.3.2 To、From和By屬性
30.3. 3 Timeline基類的作用
30.3.4用C#代碼創建動畫
30.3.5控制動畫的速度
30.3.6動畫的反轉和循環
30.4用XAML創建動畫
30.4.1演示圖板的作用
30.4.2事件觸發器的作用
30.4.3使用不連續的關鍵幀創建動畫
30.5 WPF樣式的作用
30.5.1定義並使用樣式
30.5.2重寫樣式設置
30.5.3使用TargetType自動應用樣式
30.5.4繼承已有的樣式
30.5.5未命名樣式的作用
30.5.6使用觸發器定義樣式
30.5.7使用多個觸發器定義樣式
30.5.8動畫樣式
30.5.9以編程方式設置樣式
30.6小結
第31章依賴屬性、路由事件和模板
31.1依賴屬性的作用
31.1.1已知的依賴屬性
31.1.2 CLR屬性包裝器的重要說明
31.2構建自定義依賴屬性
31.2.1添加數據驗證例程
31.2.2響應屬性的改變
31.3路由事件
31.3.1路由冒泡事件的作用
31.3.2繼續或中止冒泡
31.3.3路由隧道事件的作用
31.4邏輯樹、可視樹和默認模板
31.4.1以編程方式查看邏輯樹
31.4.2以編程方式查看可視樹
31.4. 3以編程方式查看控件的默認模板
31.5使用觸發器框架構建自定義控件模板
31.5.1模板資源
31.5.2使用觸發器添加可視提示
31.5.3 {TemplateBinding}標記擴展的作用
31.5.4 ContentPresenter的作用
31.5.5融合模板和样式
31.6小結
第八部分ASP.NET Web Form 
第32章ASP.NET Web Form 
32.1 HTTP的作用
32.1.1 HTTP請求/響應循環
32.1.2 HTTP是無狀態協議
32.2 Web應用程序和Web服務器
32.2.1 IIS虛擬目錄的作用
32.2.2 ASP.NET Development Web Server 
32.3 HTML的作用
32.3 .1 HTML文檔結構
32.3.2 HTML表單的作用
32.3.3 Visual Studio HTML設計器工具
32.3.4構建HTML表單
32.4客戶端腳本的作用
32.5回發到Web服務器
32.6 ASP.NET API概覽
32.6.1 ASP. NET 2.0及其後續版本的主要特性
32.6.2 ASP.NET 3.5(和.NET 3.5 SP1)的主要特性
32.6.3 ASP.NET 4.0和4.5的主要特性
32.7構建單個文件的ASP.NET網頁
32.7.1引用AutoLotDAL.dll 
32.7.2設計UI 
32.7.3添加數據訪問邏輯
32.7.4 ASP.NET指令的作用
32.7.5腳本塊
32.7.6 ASP.NET控件聲明
32.8使用代碼文件構建ASP.NET Web頁面
32.8.1引用AutoLotDAL.dll程序集
32.8.2更新代碼文件
32.8.3調試並跟踪ASP.NET頁面
32.9 ASP.NET Web Site和ASP.NET Web Application 
32.10 ASP.NET網站目錄結構
32.10.1引用程序集
32.10.2 App_Code文件夾的作用
32.11頁麵類型的繼承鏈
32.12與傳入的HTTP請求交互
32.12.1獲得瀏覽器統計數據
32.12.2訪問傳入的表單數據
32.12.3 IsPostBack屬性
32.13與輸出HTTP響應交互
32.13.1提交HTML內容
32.13.2重定向用戶
32.14 ASP.NET網頁的生命週期
32.14.1 AutoEventWireUp特性的作用
32.14.2 Error事件
32.15 web.config文件的作用
32.16小結
第33章ASP.NET Web控件、母版頁和主題
33.1 Web控件的本質
33.1.1服務器端事件處理
33.1.2 AutoPostBack屬性
33.2 Control和WebControl基類
33.2.1枚舉所包含的控件
33.2.2動態添加和刪除控件
33.2.3與動態創建的控件交互
33.2.4 WebControl基類的功能
33.3 ASP.NET Web控件的類別
33.3.1關於System.Web.UI.HtmlControls的簡短說明
33.3.2 Web控件的文檔
33.4構建ASP.NET汽車網站
33.4.1使用ASP.NET母版頁工作
33.4.2定義默認的內容頁面
33.4.3設計Inventory內容頁面
33.4.4設計Build—a— Car內容頁面
33.5驗證控件的作用
33.5.1開啟客戶端JavaScript驗證支持
33.5.2 RequiredFieldValidator 
33.5.3 RegularExpressionValidator 
33.5.4 RangeValidator
33.5.5 CompareValidator 
33.5.6創建ValidationSummary 
33.5.7定義驗證分組
33.6使用主題
33.6.1 *.skin文件
33.6.2應用網站級別的主題
33.6.3在頁面級別應用主題
33.6.4 SkinID屬性
33.6.5以編程方式分配主題
33.7小結
第34章ASP.NET狀態管理技術
34.1狀態問題
34.2 ASP.NET狀態管理技術
34.3 ASP.NET視圖狀態的作用
34.3.1演示視圖狀態
34.3.2添加自定義視圖狀態數據
34.4 Global .asax文件的作用
34.4.1全局最後異常事件處理程序
34.4.2 HttpApplication基類
34.5應用程序狀態與會話狀態的差別
34.5.1維護應用程序級的狀態數據
34.5.2修改應用程序數據
34.5.3處理Web應用程序的關閉
34.6使用應用程序緩存
34.6.1使用數據緩存
34.6.2修改*.aspx文件
34.7維護會話數據
34.8 cookie
34.8.1創建cookie 
34.8.2讀取傳入的cookie數據
34.9元素的作用
34.9.1在ASP.NET會話狀態服務器中保存會話數據
34.9.2把會話數據保存在專門的數據庫中
34.10 ASP.NET用戶配置API 
34.10.1 ASPNETDB.mdf數據庫
34.10.2在web.config中定義用戶配置
34.10.3以編程方式訪問用戶配置數據
34.10.4分組用戶配置數據並且持久化自定義對象
34.11小結
索引