《37C#與NET 4高級程式設計匯總》是2011年人民郵電出版社出版的圖書,作者是Andrew Troelsen。
基本介紹
- 書名:37C#與NET 4高級程式設計匯總
- 作者:(美)Andrew Troelsen
- 原版名稱:Pro C# 2010 and the NET 4 Platform 5 edition
- 譯者:朱曄肖,逵姚,琪琳,張大磊,王少葵,范睿
- ISBN:9787115250322
- 頁數:1197
- 出版社:人民郵電出版社
- 出版時間:2011 年4月
- 開本:16
- 叢書名:圖靈程式設計叢書
內容簡介,作譯者,目錄,譯者序,前言,
內容簡介
《c#與net 4高級程式設計:第5版》是c# 領域久負盛名的經典著作,深入全面地敘述了c# 程式語言和net 平台核心,並以大量示例剖析相關概念。書中介紹了c# 的各種語言構造、net 2.0 的類、核心api、公共中間語言(cil)、動態程式集和擴展等內容;同時也介紹了net 3.0、net 3.5 和net 4 中的新的編程api,包括wpf、wcf 和wf 的功能;另外,還介紹了最新的c# 2010 程式語言、dlr、tpl、linq 編程技術、com 與net 的互操作性以及平台無關的net 開發等。
《c#與net 4高級程式設計:第5版》由微軟c# mvp andrew troelsen 編寫,歷經多次修訂,適合各層次net 開發人員閱讀。
作譯者
Andrew Troelsen世界級C#專家,微軟Visual C# MVP。他是著名的微軟技術諮詢企業Intertech的合伙人和副總裁,該公司的客戶包括微軟、霍尼韋爾、美國航天局等。他曾為MSDN網站和MacTec網站撰寫了有關各種作業系統平台上.NET技術的文章,並經常在業界主要技術會議上發表演講和開設技術講座。除本書外,他還撰寫了COM and NET Interoperability和Visual Basic NET and the NET Plafform:An Advanced Guide等著作
目錄
《c#與 net 4高級程式設計匯總》
第一部分 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 cts 14
1 7 cls 17
1 8 clr 18
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 object 189
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章 委託、事件和lambda 301
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-reader 609
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 使用datacolumn 677
22 4 使用datarow 679
22 5 使用datatable 682
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 dataset 717
22 13 小結 722
第23章 ado net之三:entity framework 723
23 1 entity framework的作用 723
23 2 創建和分析edm 730
23 3 對概念模型進行編程 739
23 4 autolotdal 4 0版,加入實體 744
23 5 將數據實體綁定到windows forms gui 748
23 6 小結 752
第24章 linq to xml簡介 753
24 1 兩個xml api的故事 753
24 2 system xml linq命名空間的成員 756
24 3 使用xelement和xdocument 759
24 4 在記憶體中操作xml文檔 762
24 5 小結 766
第25章 wcf 767
25 1 各種分散式計算api 767
25 2 wcf的作用 772
25 3 wcf核心程式集 774
25 4 visual studio wcf項目模板 775
25 5 wcf應用程式的基本構成 776
25 6 wcf的abc 777
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 foundation4 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和xaml 844
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 api 928
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構建自定義usercontrol 1028
31 7 創建wpf應用程式jackpot deluxe 1035
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 application 1070
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 cookie 1134
34 9 [sessionstate]元素的作用 1136
34 10 asp net用戶配置api 1137
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 剖析form 1157
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 獲取和安裝mono 1186
b 3 mono開發語言 1188
b 4 兼容microsoft的mono開發工具 1189
b 5 使用mono創建 net 應用程式 1190
b 6 誰在使用mono 1196
b 7 推薦學習 1196
b 8 小結 1197
譯者序
應用程式開發的目標始終如一,就是在最短時間內製作出最好的軟體。當今最流行的快速開發平台是什麼,毫無疑問,是微軟公司的 NET Framework。經過近10年的發展,微軟的 NET已經變得非常龐大和成熟,而且 NET發展的步伐越來越快。
2002年年初,微軟發布了Visual Studio NET 2002開發工具,也帶來了 NET框架的第一個版本1 0。2003年春天,微軟發布了Visual Studio NET 2003以及 NET Framework 1 1。儘管只是1 1,但是 NET Framework 1 1比1 0多了幾項重大更新,例如對移動設備的支持(精簡版 NET)和對ODBC/ Oracle資料庫的支持。2005年年底, NET Framework 2 0隨著Visual Studio 2005以及 SQL Server 2005一起發布。無論是Visual Studio 2005、C# 2 0還是ASP NET 2 0,在易用性、安全性等方面都比前輩優秀很多。C# 2 0中的泛型、疊代器、可空類型、匿名方法、分部類等特性確實給了我們很多方便。2006年年底,微軟隨Vista作業系統推出了 NET Framework 3 0。 NET Framework 3 0在 NET Framework 2 0的基礎上增加了幾個重要組件:WCF、WPF、WF和WCS(本書後面會對WCF、WPF和WF進行比較詳細的介紹)。
WCF:Windows Communication Foundation,最完整的集成化通信管理框架。WCF編程模型把Web服務、 NET遠程技術、分散式事務和訊息佇列統一到單個面向服務的編程模型中,從而實現了真正意義上的分散式計算。
WPF:Windows Presentation Foundation,最華麗的界面技術框架。WPF提供了一種一致的方案來構建編程模型,並且支持使用更為豐富的控制項和設計技術來開發Windows程式。
WF:Windows Workflow Foundation,最靈活和最強大的工作流平台。WF是微軟用來定義、執行和管理工作流的編程模型、引擎和工具的總稱。
WCS:Windows CardSpace,最安全的個人數字標識解決方案。
2007年年底,微軟發布了Visual Studio 2008以及 NET Framework 3 5。在 NET Framework 3 0的基礎上,3 5又新增了一些程式集,並引入了LINQ、ASP NET AJAX等功能。
C# 3 0:提供了隱式類型變數、自動屬性、擴展方法、對象初始化語法、Lambda表達式、匿名方法、分部方法等新特性,其實幾乎所有的新特性都是因LINQ而生的。
LINQ:語言集成查詢,官方組件包括LINQ to SQL、LINQ to XML、LINQ to DataSet等。當然,還有很多第三方公司或個人推出的LINQ to XXX。可以通過這些組件使用統一的查詢語言對各種基於磁碟、網路甚至服務的數據源進行查詢。
ASP NET AJAX:其實ASP NET AJAX最早並不是在 NET Framework 3 5中出現的,只不過 NET Framework 3 5集成了ASP NET AJAX。
關於 NET Framework 3 0中四大技術的擴展,我們也可以認為 NET Framework 3 5提供了WCF/ WPF/WF/WCS的2 0版本。
2010年4月,微軟又發布了Visual Studio 2010和 NET Framework 4,這又是一個里程碑式的版本。如果說C# 3 0中的大多數特性都是語法糖,那么C# 2010則建立在全新的CLR基礎之上。
DLR:Dynamic Language Runtime(動態語言運行時)是 NET 4的重要組成部分,它為C#這門靜態強類型語言提供了類似Smalltalk、LISP、Ruby和Python那樣的動態特性。
TPL:在多核計算機早已普及的今天,充分利用每一個CPU可以顯著提升程式的性能,是任何一個程式語言都不能忽視的功能。Task Parallel Library(任務並行庫)應景而生,你不必操作執行緒,就可以編寫細粒度、高可擴展性的並行程式。使用PLINQ還可以並行地進行LINQ查詢。
改善COM互操作性:動態特性、可選參數、命名參數、索引屬性以及PIA的誕生,都大大簡化了與傳統COM組件的互操作。
WCF、WPF和WF都升級到了4 0版本。
本書分8個部分,從最底層的CLR開始,到上層C#語言的各種結構,再到 NET Framework中提供的各種API,一直到套用層面的WCF、WF、WPF、ASP NET等,甚至是 NET的一些互操作性都進行了全面的介紹。
感謝本書的作者Andrew Troelsen先生,他為我們帶來這樣一本含大量精彩篇章的著作。本書是在前幾個版本的中文版基礎上翻譯完成的。第三版主要由王少葵、張大磊、朱曄、范睿和金雪根(思歸)翻譯,第四版的補充翻譯由朱曄、肖逵和張大磊完成,本版的補充翻譯由姚琪琳完成。特別感謝圖靈公司編輯王軍花、丁曉昀等的辛勤勞動。另外也感謝很多在翻譯過程中給過我們支持的朋友和網友,請原諒不能一一列出他們的名字。
真誠地希望我們為這本書付出的勞動沒有辜負大家的期望,希望各位讀者朋友在閱讀後能夠對 NET Framework和C#更了解。由於時間倉促,且譯者水平有限,書中難免會出現一些問題或疏漏,請各位讀者不吝賜教,我們非常感謝讀者的任何批評和反饋,並會基於此作出更正與改進。謝謝!
前言
本書歷經了多個版本,第1版大約在2001年夏天幾乎與 NET 1 0 Beta 2同時推出。從那以後,我一直感到非常幸福,心中充滿了感激之情,因為我的書得到了出版社尤其是讀者們的好評。這些年來,它曾入圍Jolt大獎提名(可惜最後沒得獎……)和2003年Referenceware編程類圖書卓越大獎(這次我贏了?太酷了!)。
更重要的是,很高興收到全世界讀者發來的郵件。他們告訴我本書對他們的事業有一定的幫助,與他們交談的感覺太棒了。事實上,本書比過去的任何版本都要好。感謝那些發來改進建議、指出排印錯別以及其他錯誤的讀者。
一些大學曾經或正在使用本書,並且本書也是計算機科學領域眾多本科和研究生的必讀書,對此,我受寵若驚。
對於出版商、讀者和教授們,我只能說謝謝並祝你編程愉快!
無論如何,自從本書第1版面市,我一直努力工作,以使本書內容和 NET平台的版本保持一致。現在你手中拿的是第5版,其中涵蓋了C# 2010程式語言和 NET 4平台的新特性,包括DLR(Dynamic Language Runtime,動態語言運行時)、TPL(Task Parallel Library,任務並行庫)、PLINQ(Parallel LINQ,並行LINQ)、ADO NET Entity Framework(EF,實體框架),以及一些細微的(但很有用的)更新,如C# 2010命名參數、C# 2010可選參數、Lazy[T]類類型等。
除了涵蓋所有這些新特性外,本書還為你打造了堅實的C#語言基礎,介紹了面向對象編程(OOP)的核心、程式集配置、資料庫訪問(ADO NET),以及構建桌面GUI應用程式、Web應用程式和(在其他話題中穿插介紹的)分散式系統的過程。
與前幾個版本一樣,這一版用友好且平和的方式描述了C#程式語言和 NET基礎類庫。同樣,新版本繼續重點闡述構建軟體解決方案所需的內容,而不會在深奧且很少有人關心的內容上浪費時間。
你和我,我們是一個團隊
技術作家所面對的是一群苛刻的讀者(我知道,因為我就是他們中的一員)。無論使用什麼平台(例如 NET、Java和COM),對部門、公司、客戶和任何課題來說,構建軟體解決方案都是非常複雜而且有針對性的事情。可能你在電子出版行業工作,或者為政府開發系統,或者是在科研機構或軍隊的某個部門工作。就我自己而言,我開發過兒童教育軟體(Oregon Trail、Amazon Trail等遊戲軟體)、各種n層系統以及許多醫療和金融行業的項目。你工作時編寫的代碼和我編寫的代碼百分之百是不同的(除非我們恰巧以前在一起工作)。
因此,在這本書中,我特意避免選擇那些和具體行業緊密相關的例子,而是用與行業無關的例子來解釋C#、OOP、CLR和 NET 4基礎類庫。我不使用諸如數據填充表格、薪水計算或者其他的一些例子,而是堅持用與我們都有聯繫的主題:汽車,另外再加上幾何結構和雇員薪水系統作為補充示例。你不用擔心會有什麼陌生的背景知識。
我要做的是盡最大可能解釋C#程式語言和 NET平台的核心內容。同時,我會儘可能把進一步學習本書的工具和策略提供給你。
你要做的是理解這些內容並將其付諸於具體編程工作中。我很清楚,你的項目可能與具有友好暱稱的汽車(比如,BMW的Zippy和Yugo的Clunker)根本無關,但是所用到的知識是相通的。
放心,只要理解了這本書中的概念,你便能夠很好地構建一個和實際情況緊密相關的 NET解決方案了。
本書內容
本書從邏輯上分為8個部分,每個部分包含一些相關聯的章節。如果讀過本書的前幾版,你很快就會發現很多變化。例如,我不再用一章單獨介紹C#語言的新特性,而是將這些新特性自然融入相關的章節。此外,根據讀者的反饋,我擴展了WPF相關的內容。下面先按部分,再按章來分解本書。
第一部分:C#與 NET平台
第一部分的目的在於讓你初步適應並了解 NET平台以及在構造 NET套用中用到的各種開發工具(其中很多是開源的)。同時,你也會學習到C#程式語言和 NET類型系統的基本知識。
第1章: NET之道
這一章講述本書其餘部分的脈絡。我們將首先回顧傳統Windows開發領域,並闡述它們的缺點。然而,該章的主要目的是介紹許多 NET相關的構建塊,如CLR(公共語言運行庫)、CTS(公共類型系統)、CLS(公共語言規範)以及基礎類庫。該章讓你對C#程式語言和 NET程式集格式有一個初步了解,同時概述了 NET平台的平台無關性(附錄B將會詳細介紹這個主題)。