C#與·NET 4高級程式設計(第5版)

fo)類型59220.3使用DirectoryIn dation Forms編程1146A.1Win

內容介紹

C#語言作為.NET平台上的第一語言,已經成為目前功能最強大的通用語言之一。
本書是被譽為“C#聖經”的經典巨著,因語言生動流暢、剖析深入、涵蓋全面而廣受推崇,暢銷不衰,曾經獲得Referenceware編程圖書大獎,併入選Jolt大獎提名。書中探討了C#語言和.NET平台的各種特性,包括重載運算符、指針、泛型等高級功能和CIL、遠程處理、Windows Forms、ASP.NET、ADO.NET等技術,不少概念都通過IL代碼透視其背後的本質,使你知其然,更知其所以然。新版更透徹闡述了C# 2010和.NET 4新功能,包括動態語言運行時(DLR)、任務並行庫(TPL,包括PLINQ)、ADO.NET實體框架(包括LINQ to EF)、擴展的WPF API,以及改進的COM互操作。
與同類圖書不同,全書由世界級C#專家Andrew Troelsen以一人之力完成,因此寫作思路和布局謀篇都獨具匠心。中文版由國內多位微軟MVP聯手譯出,強大的譯者陣容有力地保證了這部權威著作原汁原味的重現。

作者介紹

Andrew Troelsen 世界級C#專家,微軟Visual C# MVP。他是著名的微軟技術諮詢企業Intertech的合伙人和副總裁,該公司的客戶包括微軟、霍尼韋爾、美國宇航局等。他曾為MSDN網站和 MacTech網站撰寫了有關各種作業系統平台上.NET技術的文章,並經常在業界主要技術會議上發表演講和開設技術講座。除本書外,他還撰寫了COM and .NET Interoperability和Visual Basic .NET and the .NET Platform: An Advanced Guide等十多部.NET技術方面的著作。

作品目錄

第一部分 C#與.NET平台
第1章 .NET之道2
1.1 .NET之前的世界2
1.2 .NET解決方案5
1.3 .NET平台構造塊(CLR、CTS和CLS)
簡介5
1.4 其他支持.NET的程式語言7
1.5 .NET程式集概覽9
1.6 CTS14
1.7 CLS17
1.8 CLR18
1.9 程式集/命名空間/類型的區別19
1.10 使用ildasm.exe探索程式集24
1.11 使用Reflector來查看程式集26
1.12 部署.NET運行庫27
1.13 .NET的平台無關性27
1.14 小結28
第2章 構建C#應用程式30
2.1 .NET Framework 4 SDK的作用30
2.2 用csc.exe構建C#應用程式31
2.3 使用Notepad++構建.NET應用程式36
2.4 使用SharpDevelop構建.NET應用程式36
2.5 使用Visual C# 2010 Express構建.NET
應用程式38
2.6 使用Visual Studio 2010構建.NET套用
程式40
2.7 小結50
第二部分 C#核心編程結構
第3章 C#核心編程結構Ⅰ52
3.1 一個簡單的C#程式52
3.2 有趣的題外話:System.Environment類的其他成員57
3.3 System.Console類58
3.4 系統數據類型和C#簡化符號62
3.5 使用字元串數據70
3.6 窄化和寬化數據類型轉換76
3.7 隱式類型本地變數81
3.8 C#疊代結構84
3.9 條件結構和關係/相等操作符86
3.10 小結89
第4章 C#核心編程結構Ⅱ90
4.1 方法和參數修飾符90
4.2 C#中的數組操作99
4.3 枚舉類型105
4.4 結構類型109
4.5 值類型和引用類型112
4.6 C#可空類型118
4.7 小結121
第5章 定義封裝的類類型122
5.1 C#類類型122
5.2 構造函式125
5.3 this關鍵字的作用128
5.4 static關鍵字133
5.5 定義OOP的支柱139
5.6 C#訪問修飾符142
5.7 第一個支柱:C#的封裝服務144
5.8 自動屬性154
5.9 對象初始化器語法157
5.10 常量數據160
5.11 分部類型162
5.12 小結163
第6章 繼承和多態164
6.1 繼承的基本機制164
6.2 回顧Visual Studio類關係圖168
6.3 OOP的第二個支柱:繼承169
6.4 包含/委託編程174
6.5 OOP的第三個支柱:C#的多態支持176
6.6 基類/派生類的轉換規則187
6.7 超級父類:System.Object189
6.8 小結195
第7章 結構化異常處理196
7.1 錯誤、bug與異常196
7.2 .NET異常處理的作用197
7.3 最簡單的例子199
7.4 配置異常的狀態202
7.5 系統級異常(System.System-Exception)206
7.6 應用程式級異常(System.Applica-tionException)207
7.7 處理多個異常210
7.8 誰在引發什麼異常215
7.9 未處理異常的後果215
7.10 使用Visual Studio調試未處理的異常216
7.11 損壞狀態異常簡介217
7.12 小結218
第8章 對象的生命周期219
8.1 類、對象和引用219
8.2 對象生命周期的基礎220
8.3 應用程式根的作用223
8.4 對象的代224
8.5 .NET 1.0 至.NET 3.5的並發垃圾回收225
8.6 .NET 4下的後台垃圾回收225
8.7 System.GC類型225
8.8 構建可終結對象229
8.9 構建可處置對象231
8.10 構建可終結類型和可處置類型234
8.11 延遲對象實例化237
8.12 小結240
第三部分 高級C#編程結構
第9章 接口242
9.1 接口類型242
9.2 定義自定義接口245
9.3 實現接口247
9.4 在對象級別調用接口成員248
9.5 接口作為參數250
9.6 接口作為返回值252
9.7 接口類型數組253
9.8 使用Visual Studio 2010實現接口253
9.9 通過顯式接口實現解決命名衝突254
9.10 設計接口層次結構257
9.11 構建可枚舉類型(IEnumerable和IEnumerator)260
9.12 構建可克隆的對象(ICloneable)265
9.13 構建可比較的對象(IComparable)269
9.14 小結273
第10章 泛型274
10.1 非泛型集合274
10.2 泛型類型參數的作用281
10.3 System.Collections.Generic命名空間285
10.4 創建自定義泛型方法292
10.5 創建自定義泛型結構和類294
10.6 類型參數的約束297
10.7 小結300
第11章 委託、事件和Lambda301
11.1 .NET委託類型301
11.2 在C#中定義委託類型302
11.3 System.MulticastDelegate與System.Delegate基類304
11.4 最簡單的委託示例305
11.5 使用委託傳送對象狀態通知307
11.6 方法組轉換語法313
11.7 委託協變314
11.8 泛型委託316
11.9 C#事件318
11.10 C#匿名方法325
11.11 Lambda表達式328
11.12 小結333
第12章 高級C#語言特性335
12.1 索引器方法335
12.2 操作符重載339
12.3 自定義類型轉換347
12.4 擴展方法352
12.5 分部方法360
12.6 匿名類型362
12.7 指針類型367
12.8 小結373
第13章 LINQ to Object 374
13.1 LINQ特有的編程結構374
13.2 LINQ的作用377
13.3 將LINQ查詢套用於原始數組379
13.4 返回LINQ查詢的結果385
13.5 將LINQ查詢套用到集合對象387
13.6 C#LINQ查詢操作符389
13.7 LINQ查詢語句的內部表示396
13.8 小結400
第四部分 用.NET程式集編程
第14章 .NET程式集入門402
14.1 定義自定義命名空間402
14.2 .NET程式集的作用407
14.3 .NET程式集的格式409
14.4 構建和使用單檔案程式集412
14.5 構建和使用多檔案程式集421
14.6 私有程式集423
14.7 共享程式集427
14.8 使用共享程式集433
14.9 配置共享程式集435
14.10 發行者策略程式集439
14.11 <codeBase>元素440
14.12 System.Configuration命名空間441
14.13 小結442
第15章 類型反射、晚期綁定和基於特性的編程443
15.1 類型元數據的必要性443
15.2 反射447
15.3 構建自定義的元數據查看器450
15.4 動態載入程式集454
15.5 反射共享程式集457
15.6 晚期綁定458
15.7 .NET特性的作用461
15.8 構建自定義特性465
15.9 程式集級別(和模組級別)特性467
15.10 使用早期綁定反射特性469
15.11 使用晚期綁定反射特性470
15.12 反射、晚期綁定和自定義特性的使用背景471
15.13 構建可擴展的應用程式472
15.14 小結477
第16章 進程、應用程式域和對象上下文478
16.1 Windows進程的作用478
16.2 .NET平台下與進程進行互動480
16.3 .NET應用程式域488
16.4 與默認應用程式域進行互動489
16.5 創建新的應用程式域492
16.6 對象上下文邊界495
16.7 進程、應用程式域和上下文小結498
16.8 小結499
第17章 CIL和動態程式集的作用500
17.1 學習CIL語法的原因500
17.2 CIL指令、特性和操作碼501
17.3 入棧和出棧:CIL基於棧的本質502
17.4 正反向工程504
17.5 CIL指令和特性510
17.6 .NET基礎類庫、C#和CIL數據類型的映射515
17.7 在CIL中定義類型成員516
17.8 剖析CIL操作碼518
17.9 使用CIL構建.NET程式集522
17.10 動態程式集526
17.11 小結534
第18章 動態類型和動態語言運行時535
18.1 dynamic關鍵字的作用535
18.2 DLR的作用540
18.3 使用動態類型簡化後期綁定調用542
18.4 使用動態數據簡化COM互操作544
18.5 使用C# 2010的特性進行COM互操作548
18.6 小結552
第五部分 .NET基礎類庫
第19章 構建多執行緒應用程式554
19.1 進程、應用程式域、上下文及執行緒之間的關係554
19.2 .NET委託的簡短回顧556
19.3 委託的異步性557
19.4 異步調用方法559
19.5 System.Threading命名空間564
19.6 System.Threading.Thread類564
19.7 以編程方式創建次執行緒567
19.8 並發問題572
19.9 使用Timer Callback編程578
19.10 CLR執行緒池579
19.11 .NET平台下的並行編程581
19.12 並行LINQ查詢(PLINQ)588
19.13 小結590
第20章 檔案輸入輸出和對象序列化591
20.1 研究System.IO命名空間591
20.2 Directory(Info)和File(Info)類型592
20.3 使用DirectoryInfo類型593
20.4 使用Directory類型596
20.5 使用DriveInfo類類型597
20.6 使用FileInfo類598
20.7 使用File類型601
20.8 Stream抽象類603
20.9 使用StreamWriter和StreamReader類型605
20.10 使用StringWriter和StringReader類型608
20.11 使用BinaryWriter和Binary-Reader609
20.12 以編程方式“觀察”檔案610
20.13 對象序列化612
20.14 為序列化配置對象614
20.15 選擇序列化格式化程式616
20.16 使用BinaryFormatter序列化對象618
20.17 使用SoapFormatter序列化對象620
20.18 使用XmlSerializer序列化對象621
20.19 序列化對象集合623
20.20 自定義Soap/Binary序列化過程624
20.21 小結628
第21章 ADO.NET之一:連線層630
21.1 ADO.NET的巨觀定義630
21.2 ADO.NET數據提供程式632
21.3 其他的ADO.NET命名空間634
21.4 System.Data命名空間的類型635
21.5 使用接口的抽象數據提供程式639
21.6 創建AutoLot資料庫641
21.7 ADO.NET數據提供程式工廠模型645
21.8 ADO.NET的連線層650
21.9 使用數據讀取器654
21.10 構建可重用的數據訪問庫656
21.11 創建控制台UI前端664
21.12 資料庫事務669
21.13 小結673
第22章 ADO.NET之二:下線層674
22.1 ADO.NET下線層674
22.2 DataSet的作用675
22.3 使用DataColumn677
22.4 使用DataRow679
22.5 使用DataTable682
22.6 將DataTable對象綁定到用戶界面687
22.7 使用數據適配器695
22.8 向AutoLotDAL.dll添加下線功能698
22.9 多表DataSet對象和數據關係701
22.10 Windows Forms資料庫設計器工具706
22.11 將強類型的資料庫代碼隔離到類庫中713
22.12 LINQ to DataSet717
22.13 小結722
第23章 ADO.NET之三:Entity Framework 723
23.1 Entity Framework的作用723
23.2 創建和分析EDM730
23.3 對概念模型進行編程739
23.4 AutoLotDAL 4.0版,加入實體744
23.5 將數據實體綁定到Windows Forms GUI748
23.6 小結752
第24章 LINQ to XML簡介753
24.1 兩個XML API的故事753
24.2 System.Xml.Linq命名空間的成員756
24.3 使用XElement和XDocument759
24.4 在記憶體中操作XML文檔762
24.5 小結766
第25章 WCF767
25.1 各種分散式計算API767
25.2 WCF的作用772
25.3 WCF核心程式集774
25.4 Visual Studio WCF項目模板775
25.5 WCF應用程式的基本構成776
25.6 WCF的ABC777
25.7 構建WCF服務781
25.8 承載WCF服務784
25.9 構建WCF客戶端應用程式791
25.10 用WCF 4.0簡化配置設定795
25.11 使用WCF服務庫項目模板800
25.12 以Windows服務承載WCF服務803
25.13 從客戶端異步調用服務807
25.14 定義WCF數據契約809
25.15 小結813
第26章 Windows Workflow Foundation
4.0簡介814
26.1 定義業務流程814
26.2 構建簡單的工作流815
26.3 WF 4.0運行時818
26.4 檢查WF 4.0中的活動823
26.5 構建流程圖工作流825
26.6 用專門的庫隔離工作流833
26.7 使用工作流庫840
26.8 小結842
第六部分 使用WPF構建桌面用戶界面
第27章 WPF和XAML844
27.1 WPF背後的動機844
27.2 各種形式的WPF應用程式846
27.3 WPF程式集850
27.4 創建不使用XAML的WPF應用程式856
27.5 僅使用XAML構建WPF應用程式863
27.6 將標記轉換為.NET程式集867
27.7 WPF XAML語法871
27.8 使用代碼隱藏檔案構建WPF應用程式879
27.9 使用Visual Studio 2010構建WPF應用程式881
27.10 小結889
第28章 使用WPF控制項編程890
28.1 WPF核心控制項概述890
28.2 使用面板控制內容布局894
28.3 使用嵌套面板構建視窗框架903
28.4 WPF控制項命令907
28.5 使用Expression Blend構建WPF用戶界面912
28.6 構建Ink API選項卡919
28.7 Documents API928
28.8 構建Documents選項卡929
28.9 WPF數據綁定模型934
28.10 小結941
第29章 WPF圖形呈現服務942
29.1 理解WPF的圖形呈現服務942
29.2 使用形狀呈現圖形數據943
29.3 WPF畫刷和畫筆952
29.4 圖形變換955
29.5 使用Expression Blend處理形狀958
29.6 使用繪圖和幾何圖形呈現圖形數據962
29.7 使用Expression Design生成複雜的向量圖形965
29.8 使用可視化層呈現圖形數據967
29.9 小結972
第30章 WPF資源、動畫和樣式973
30.1 理解WPF資源系統973
30.2 使用對象(邏輯)資源978
30.3 理解WPF動畫服務988
30.4 用XAML創建動畫992
30.5 WPF樣式的作用994
30.6 使用Expression Blend生成樣式1001
30.7 小結1003
第31章 WPF控制項模板和用戶控制項1004
31.1 依賴屬性的作用1004
31.2 構建自定義依賴屬性1008
31.3 路由事件1013
31.4 邏輯樹、可視樹和默認模板1016
31.5 在Visual Studio 2010中構建自定義控制項模板1022
31.6 使用Blend構建自定義UserControl1028
31.7 創建WPF應用程式Jackpot Deluxe1035
31.8 小結1043
第七部分 使用ASP.NET構建Web應用程式
第32章 構建ASP.NET網頁1046
32.1 HTTP的作用1046
32.2 Web應用程式和Web服務1047
32.3 HTML的作用1048
32.4 客戶端腳本的作用1053
32.5 回發到Web伺服器1054
32.6 ASP.NET API的特性1055
32.7 構建單個檔案的ASP.NET網頁1058
32.8 使用代碼檔案構建ASP.NET Web頁面1066
32.9 ASP.NET Web Site和ASP.NET Web Application1070
32.10 ASP.NET網站目錄結構1072
32.11 頁面類型的繼承鏈1073
32.12 與傳入的HTTP請求互動1074
32.13 與輸出HTTP回響互動1077
32.14 ASP.NET網頁的生命周期1078
32.15 Web.config檔案的作用1081
32.16 小結1082
第33章 ASP.NET Web控制項、母版頁和主題1083
33.1 Web控制項的本質1083
33.2 Control和WebControl基類1085
33.3 ASP.NET Web控制項的類別1089
33.4 構建ASP.NET汽車網站1091
33.5 驗證控制項的作用1104
33.6 使用主題1110
33.7 小結1114
第34章 ASP.NET狀態管理技術1115
34.1 狀態問題1115
34.2 ASP.NET狀態管理技術1117
34.3 ASP.NET視圖狀態的作用1117
34.4 Global.asax檔案的作用1120
34.5 應用程式狀態與會話狀態的差別1123
34.6 使用應用程式快取1127
34.7 維護會話數據1131
34.8 cookie1134
34.9 <sessionState>元素的作用1136
34.10 ASP.NET用戶配置API1137
34.11 小結1143
第八部分 附錄
附錄A Windows Forms編程1146
A.1 Windows Forms命名空間1146
A.2 創建一個簡單的Windows Forms程式1147
A.3 Visual Studio Windows Forms項目模板1152
A.4 剖析Form1157
A.5 回響滑鼠活動1163
A.6 設計對話框1166
A.7 通過GDI+呈現圖形數據1171
A.8 創建一個完整的Windows Forms應用程式1175
A.9 小結1182
附錄B 使用Mono進行平台無關的.NET開發1183
B.1 .NET的平台無關性1183
B.2 獲取和安裝Mono1186
B.3 Mono開發語言1188
B.4 兼容Microsoft的Mono開發工具1189
B.5 使用Mono創建.NET 應用程式1190
B.6 誰在使用Mono1196
B.7 推薦學習1196
B.8 小結1197

相關詞條

熱門詞條

聯絡我們