第1章 .NET體系結構 1
1.1 C#與.NET的關系 1
1.2 公共語言運行庫 1
1.3 中間語言 4
1.3.1 面向對象和接口的支持 5
1.3.2 值類型和引用類型 6
1.3.3 強數據類型 6
1.3.4 通過異常處理錯誤 12
1.3.5 特性的使用 12
1.4 程序集 12
1.4.1 私有程序集 13
1.4.2 共享程序集 14
1.4.3 反射 14
1.5 .NET Framework類 14
1.6 用C#創(chuàng)建.NET應用程序 16
1.6.1 創(chuàng)建ASP.NET應用程序 16
1.6.2 創(chuàng)建Windows窗體 18
1.6.3 Windows服務 18
1.7 C#在.NET企業(yè)體系結構中的作用 18
1.8 小結 20
第2章 C#基礎 21
2.1 引言 21
2.2 第一個C#程序 22
2.2.1 代碼 22
2.2.2 編譯并運行程序 22
2.2.3 詳細介紹 23
2.3 變量 25
2.3.1 變量的初始化 26
2.3.2 變量的作用域 26
2.3.3 常量 29
2.4 預定義數據類型 30
2.4.1 值類型和引用類型 30
2.4.2 CTS類型 31
2.4.3 預定義的值類型 32
2.4.4 預定義的引用類型 35
2.5 流控制 37
2.5.1 條件語句 37
2.5.2 循環(huán) 41
2.5.3 跳轉語句 44
2.6 枚舉 45
2.7 數組 47
2.8 命名空間 48
2.8.1 using語句 49
2.8.2 命名空間的別名 50
2.9 Main()方法 51
2.9.1 多個Main()方法 51
2.9.2 給Main()方法傳送參數 52
2.10 有關編譯C#文件的更多內容 53
2.11 控制臺I/O 55
2.12 使用注釋 57
2.12.1 源文件中的內部注釋 57
2.12.2 XML文檔說明 57
2.13 C#預處理器指令 59
2.13.1 #define和 #undef 60
2.13.2 #if, #elif, #else和 #endif 60
2.13.3 #warning和 # error 61
2.13.4 #region和#endregion 62
2.13.5 #line 62
2.14 C#編程規(guī)則 62
2.14.1 用于標識符的規(guī)則 63
2.14.2 用法約定 64
2.15 小結 69
第3章 對象和類型 70
3.1 類和結構 70
3.2 類成員 71
3.2.1 數據成員 71
3.2.2 函數成員 72
3.2.3 只讀字段 86
3.3 結構 87
3.3.1 結構是值類型 88
3.3.2 結構和繼承 89
3.3.3 結構的構造函數 89
3.4 Object類 90
3.4.1 System.Object方法 90
3.4.2 ToString()方法 91
3.5 小結 93
第4章 繼承 94
4.1 繼承的類型 94
4.1.1 實現繼承和接口繼承 94
4.1.2 多重繼承 95
4.1.3 結構和類 95
4.2 實現的繼承 95
4.2.1 虛方法 96
4.2.2 隱藏方法 97
4.2.3 調用函數的基礎版本 98
4.2.4 抽象類和抽象函數 99
4.2.5 密封類和密封方法 100
4.2.6 派生類的構造函數 101
4.3 修飾符 105
4.3.1 可見性修飾符 105
4.3.2 其他修飾符 106
4.4 接口 107
4.4.1 定義和實現接口 108
4.4.2 派生的接口 112
4.5 小結 114
第5章 運算符和類型強制轉換 115
5.1 運算符 115
5.1.1 運算符的簡化操作 116
5.1.2 三元運算符 117
5.1.3 checked和 unchecked運算符 118
5.1.4 is運算符 119
5.1.5 as運算符 119
5.1.6 sizeof運算符 119
5.1.7 typeof運算符 119
5.1.8 運算符的優(yōu)先級 120
5.2 類型的安全性 120
5.2.1 類型轉換 121
5.2.2 裝箱和取消裝箱 124
5.3 對象的相等比較 125
5.3.1 引用類型的相等比較 125
5.3.2 ReferenceEquals()方法 125
5.3.3 虛擬的Equals()方法 125
5.3.4 靜態(tài)的Equals()方法 125
5.3.5 比較運算符== 126
5.3.6 值類型的相等比較 126
5.4 運算符重載 126
5.4.1 運算符的工作方式 127
5.4.2 運算符重載的示例:Vector結構 128
5.5 用戶定義的數據類型轉換 135
5.5.1 執(zhí)行用戶定義的類型轉換 137
5.5.2 多重數據類型轉換 143
5.6 小結 147
第6章 委托和事件 148
6.1 委托 148
6.1.1 在C#中使用委托 149
6.1.2 簡單的委托示例 153
6.1.3 BubbleSorter示例 154
6.1.4 多播委托 157
6.2 事件 160
6.2.1 從客戶的角度討論事件 160
6.2.2 生成事件 162
6.3 小結 166
第7章 內存管理和指針 167
7.1 后臺內存管理 167
7.1.1 值數據類型 167
7.1.2 引用數據類型 169
7.1.3 垃圾收集 171
7.2 釋放未托管的資源 172
7.2.1 析構函數 172
7.2.2 IDisposable接口 173
7.2.3 實現IDisposable接口和析構函數 175
7.3 不安全的代碼 176
7.3.1 指針 176
7.3.2 使用指針優(yōu)化性能 191
7.4 小結 194
第8章 字符串和正則表達式 195
8.1 System.String類 195
8.1.1 創(chuàng)建字符串 196
8.1.2 格式化字符串 200
8.2 正則表達式 206
8.2.1 正則表達式概述 206
8.2.2 RegularExpressionsPlayaround示例 207
8.2.3 顯示結果 209
8.2.4 匹配、組合和捕獲 211
8.3 小結 212
第9章 集合 213
9.1 對象組 213
9.1.1 數組列表 213
9.1.2 集合 215
9.1.3 字典 219
9.2 小結 228
第10章 反射 229
10.1 定制特性 229
10.1.1 編寫定制特性 230
10.1.2 定制特性示例WhatsNewAttributes 233
10.2 反射 237
10.2.1 System.Type類 237
10.2.2 TypeView示例 239
10.2.3 Assembly類 241
10.2.4 完成WhatsNewAttributes示例 243
10.3 小結 247
第11章 錯誤和異常 248
11.1 錯誤和異常處理 248
11.1.1 異常類 248
11.1.2 捕獲異常 250
11.1.3 用戶定義的異常類 259
11.2 小結 267
第12章 Visual Studio .NET 268
12.1 使用Visual Studio .NET 2003 268
12.1.1 創(chuàng)建項目 271
12.1.2 解決方案和項目 276
12.1.3 Windows應用程序代碼 279
12.1.4 讀取Visual Studio 6項目 279
12.1.5 項目的瀏覽和編碼 280
12.1.6 生成項目 289
12.1.7 調試 293
12.2 其他.NET工具 295
12.2.1 ASP.NET Web Matrix Project 295
12.2.2 WinCV 296
12.3 小結 297
第13章 程序集 298
13.1 程序集的含義 298
13.1.1 DLL-Hell的解決方案 299
13.1.2 程序集的特性 299
13.1.3 應用程序域和程序集 300
13.2 程序集的結構 303
13.2.1 程序集的清單 303
13.2.2 命名空間、程序集和組件 304
13.2.3 私有程序集和共享程序集 304
13.2.4 查看程序集 304
13.2.5 構建程序集 305
13.3 跨語言支持 309
13.3.1 CTS和CLS 310
13.3.2 語言無關性 311
13.3.3 CLS要求 320
13.4 全局程序集緩存 321
13.4.1 本機圖像生成器 322
13.4.2 全局程序集緩存查看器 322
13.4.3 全局程序集緩存工具(gacutil.exe) 324
13.5 創(chuàng)建共享程序集 324
13.5.1 共享程序集名 324
13.5.2 創(chuàng)建共享程序集 326
13.6 配置 331
13.6.1 配置類別 331
13.6.2 版本問題 332
13.6.3 配置目錄 341
13.7 小結 343
第14章 .NET的安全性 344
14.1 代碼訪問的安全性 344
14.1.1 代碼組 345
14.1.2 代碼訪問權限和權限集 351
14.1.3 策略的級別:Machine、User和Enterprise 355
14.2 對Framework中安全性的支持 357
14.2.1 要求權限 358
14.2.2 請求權限 359
14.2.3 隱式的權限 361
14.2.4 拒絕權限 362
14.2.5 斷言權限 363
14.2.6 創(chuàng)建代碼訪問權限 365
14.2.7 聲明的安全性 365
14.3 基于角色的安全性 366
14.3.1 Principal 366
14.3.2 Windows Principal 367
14.3.3 角色 368
14.3.4 聲明基于角色的安全性 369
14.4 安全策略的管理 370
14.4.1 安全配置文件 370
14.4.2 代碼組和權限的管理 373
14.4.3 安全性的啟用和禁用 374
14.4.4 重置安全策略 374
14.4.5 代碼組的創(chuàng)建 374
14.4.6 代碼組的刪除 375
14.4.7 代碼組權限的更改 375
14.4.8 權限集的創(chuàng)建和應用 376
14.4.9 使用強名稱發(fā)布代碼 378
14.4.10 使用證書發(fā)布代碼 381
14.4.11 區(qū)域的管理 386
14.5 小結 387
第15章 線程 389
15.1 線程 389
15.2 多線程應用程序 390
15.3 線程的處理 391
15.4 ThreadPlayaround示例 393
15.5 線程的優(yōu)先級 397
15.6 同步 398
15.6.1 同步的含義 398
15.6.2 同步問題 399
15.7 小結 402
第16章 使用.NET Remoting的分布式應用程序 403
16.1 .NET Remoting的含義 404
16.1.1 應用程序類型和協(xié)議 404
16.1.2 CLR Object Remoting 405
16.2 .NET Remoting概述 405
16.3 環(huán)境 407
16.3.1 激活 408
16.3.2 特性和屬性 408
16.3.3 環(huán)境之間的通信 409
16.4 遠程對象、客戶機和服務器 409
16.4.1 遠程對象 409
16.4.2 簡單的服務器 410
16.4.3 簡單的客戶機 411
16.5 .NET Remoting體系結構 413
16.5.1 信道 413
16.5.2 格式標識符 416
16.5.3 ChannelServices和RemotingConfiguration 417
16.5.4 對象的激活 418
16.5.5 消息接收器 422
16.5.6 在遠程方法中傳遞對象 423
16.5.7 生存期管理 427
16.6 .NET Remoting的其他特性 430
16.6.1 配置文件 430
16.6.2 駐留應用程序 440
16.6.3 類、接口和Soapsuds 441
16.6.4 異步遠程調用 443
16.6.5 遠程調用和事件 445
16.6.6 調用環(huán)境 451
16.7 小結 453
第17章 本地化 454
17.1 System.Globalization命名空間 454
17.1.1 Unicode問題 454
17.1.2 文化和區(qū)域 455
17.1.3 使用文化 459
17.1.4 排序 464
17.2 資源 465
17.2.1 創(chuàng)建資源文件 466
17.2.2 ResGen 466
17.2.3 ResourceWriter 466
17.2.4 使用資源文件 467
17.2.5 System.Resources命名空間 470
17.3 使用Visual Studio .NET的本地化示例 470
17.3.1 外包翻譯 476
17.3.2 編程修改文化 476
17.3.3 使用二進制資源文件 478
17.3.4 使用XML資源文件 479
17.3.5 資源的自動回退 480
17.4 ASP.NET應用程序的國際化和本地化 481
17.5 定制的資源讀取器 482
17.5.1 創(chuàng)建DatabaseResourceReader類 483
17.5.2 創(chuàng)建DatabaseResourceSet類 484
17.5.3 創(chuàng)建DatabaseResourceManager類 485
17.5.4 DatabaseResourceReader的客戶應用程序 486
17.6 小結 486
第18章 部署 487
18.1 部署的設計 487
18.2 部署選項 487
18.2.1 xcopy實用工具 487
18.2.2 復制項目 488
18.2.3 部署項目 488
18.3 部署的要求 488
18.4 簡單的部署 489
18.4.1 xcopy部署 489
18.4.2 xcopy部置和Web應用程序 490
18.4.3 復制項目 491
18.5 Installer項目 492
18.5.1 Windows Installer 493
18.5.2 創(chuàng)建安裝程序 493
18.5.3 高級選項 502
18.6 小結 508
第19章 Windows窗體 509
19.1 創(chuàng)建Windows窗體應用程序 509
19.2 Control類 515
19.2.1 大小和位置 516
19.2.2 外觀 516
19.2.3 用戶交互操作 516
19.2.4 Windows功能 517
19.2.5 雜項功能 518
19.2.6 類層次結構 518
19.3 標準控件和組件 519
19.3.1 Button控件 520
19.3.2 CheckBox控件 521
19.3.3 ComboBox控件與ListBox控件 521
19.3.4 DateTimePicker控件 522
19.3.5 ErrorProvider組件 522
19.3.6 HelpProvider組件 524
19.3.7 ImageList組件 524
19.3.8 Label控件 524
19.3.9 ListView控件 525
19.3.10 Panel控件 527
19.3.11 PictureBox控件 527
19.3.12 ProgressBar控件 527
19.3.13 RadioButton控件 528
19.3.14 TextBox控件與RichTextBox控件 528
19.3.15 Splitter控件 529
19.3.16 StatusBar控件 529
19.3.17 TabControl控件和TabPages控件 530
19.3.18 Menu控件 530
19.3.19 ToolBar控件 532
19.4 窗體 534
19.4.1 Form類 534
19.4.2 多文檔界面 542
19.4.3 定制控件 545
19.5 小結 557
第20章 使用GDI+繪圖 558
20.1 理解繪圖規(guī)則 558
20.1.1 GDI和GDI+ 558
20.1.2 繪制圖形 560
20.1.3 使用OnPaint()繪制圖形 563
20.1.4 使用剪切區(qū)域 564
20.2 測量坐標和區(qū)域 565
20.2.1 Point和PointF結構 566
20.2.2 Size和SizeF結構 567
20.2.3 Rectangle和RectangleF結構 568
20.2.4 Region 569
20.3 調試須知 570
20.4 繪制可滾動的窗口 571
20.5 顏色 577
20.5.1 紅綠藍(RGB)值 577
20.5.2 命名的顏色 578
20.5.3 圖形顯示模式和安全的調色板 578
20.5.4 安全調色板 579
20.6 畫筆和鋼筆 579
20.6.1 畫筆 580
20.6.2 鋼筆 580
20.7 繪制圖形和線條 581
20.8 顯示圖像 583
20.9 繪制文本 586
20.10 字體和字體系列 588
20.11 示例:枚舉字體系列 590
20.12 編輯文本文檔:CapsEditor示例 592
20.12.1 Invalidate()方法 596
20.12.2 計算項和文檔的大小 597
20.12.3 OnPaint() 599
20.12.4 坐標轉換 600
20.12.5 響應用戶的輸入 602
20.13 打印 605
20.14 小結 610
第21章 .NET數據訪問 612
21.1 ADO.NET概述 612
21.1.1 命名空間 613
21.1.2 共享類 613
21.1.3 數據庫特定的類 613
21.2 使用數據庫連接 614
21.2.1 高效地使用連接 615
21.2.2 事務處理 618
21.3 命令 619
21.3.1 執(zhí)行命令 620
21.3.2 調用存儲過程 624
21.4 快速數據訪問:數據讀取器 627
21.5 管理數據和關系:DataSet類 630
21.5.1 數據表 630
21.5.2 數據列 631
21.5.3 數據關系 636
21.5.4 數據約束 638
21.6 XML模式 640
21.7 填充數據集 647
21.7.1 用數據適配器來填充 DataSet 647
21.7.2 從XML中給數據集填充數據 649
21.8 保存對數據集的修改 649
21.8.1 通過數據適配器進行更新 649
21.8.2 寫入XML輸出結果 652
21.9 使用ADO.NET 654
21.9.1 分層開發(fā) 654
21.9.2 SQL Server的鍵生成 655
21.9.3 命名約定 657
21.10 小結 658
第22章 查看.NET數據 660
22.1 DataGrid控件 660
22.1.1 顯示列表數據 660
22.1.2 數據源 662
22.1.3 DataGrid類的層次結構 669
22.2 數據綁定 673
22.2.1 簡單的綁定 673
22.2.2 數據綁定對象 674
22.3 Visual Studio .NET和數據訪問 679
22.3.1 創(chuàng)建一個連接 679
22.3.2 選擇數據 681
22.3.3 生成DataSet 683
22.3.4 更新數據源 684
22.3.5 構建模式 686
22.3.6 其他常見的要求 691
22.4 小結 700
第23章 處理XML 701
23.1 .NET支持的XML標準 701
23.2 System.Xml命名空間 702
23.3 在.NET中使用MSXML 703
23.4 使用System.Xml類 705
23.5 讀寫流格式的XML 706
23.5.1 使用 XmlTextReader類 706
23.5.2 使用XmlValidatingReader類 710
23.5.3 使用XmlTextWriter類 713
23.6 在.NET中使用DOM 714
23.7 在NET中使用XPath和XSLT 721
23.7.1 System.Xml.XPath命名空間 721
23.7.2 System.Xml.Xsl命名空間 725
23.8 XML和ADO.NET 730
23.8.1 將ADO.NET數據轉換為XML文檔 730
23.8.2 把XML文檔轉換為 ADO.NET數據 739
23.8.3 讀寫DiffGram 741
23.9 在XML中串行化對象 744
23.10 小結 756
第24章 使用Active Directory 757
24.1 Active Directory的體系結構 757
24.1.1 特性 758
24.1.2 Active Directory的概念 758
24.1.3 Active Directory數據的特性 762
24.1.4 模式 762
24.2 Active Directory的管理工具 763
24.2.1 Active Directory Users and Computers工具 764
24.2.2 ADSI Edit工具 765
24.3 Active Directory Service Interfaces 766
24.4 Active Directory編程 766
24.4.1 System.DirectoryServices命名空間中的類 767
24.4.2 綁定 767
24.4.3 獲取目錄項 771
24.4.4 對象集合 773
24.4.5 緩存 774
24.4.6 創(chuàng)建新對象 774
24.4.7 更新目錄項 775
24.4.8 訪問內部的ADSI對象 776
24.4.9 在Active Directory中搜索 777
24.5 搜索用戶對象 781
24.5.1 用戶界面 781
24.5.2 獲取模式命名環(huán)境 782
24.5.3 獲取User類的屬性名 783
24.5.4 搜索用戶對象 784
24.6 小結 786
第25章 ASP.NET頁面 787
25.1 ASP.NET概述 787
25.2 ASP.NET Web窗體 788
25.3 ADO.NET和數據綁定 805
25.3.1 更新會議登記應用程序 805
25.3.2 數據綁定的更多內容 813
25.4 應用程序配置 819
25.5 小結 820
第26章 Web服務 821
26.1 SOAP 821
26.2 WSDL 823
26.3 Web服務 824
26.3.1 創(chuàng)建Web服務 824
26.3.2 使用Web服務 828
26.4 擴充會議登記示例 830
26.4.1 會議登記 Web服務 830
26.4.2 會議登記客戶程序 834
26.5 使用SOAP標題交換數據 836
26.6 小結 841
第27章 用戶控件和定制控件 842
27.1 用戶控件 842
27.2 定制控件 849
27.2.1 定制控件的項目配置 850
27.2.2 基本的定制控件 853
27.2.3 創(chuàng)建合成的定制控件 858
27.3 測驗民意的投票控件 860
27.3.1 Candidate 控件 862
27.3.2 StrawPoll控件構建器 864
27.3.3 測試民意的投票類型 865
27.3.4 測試民意的投票控件 865
27.4 小結 872
第28章 COM的互操作性 873
28.1 .NET和COM 873
28.1.1 元數據 874
28.1.2 釋放內存 874
28.1.3 接口 874
28.1.4 方法綁定 876
28.1.5 數據類型 876
28.1.6 注冊 876
28.1.7 線程 876
28.1.8 錯誤處理 878
28.1.9 事件處理 878
28.2 編組 879
28.3 在.NET客戶程序中使用COM組件 879
28.3.1 創(chuàng)建COM組件 880
28.3.2 創(chuàng)建Runtime Callable Wrapper 884
28.3.3 線程問題 886
28.3.4 添加連接點 886
28.3.5 在Windows窗體中使用ActiveX控件 888
28.3.6 在ASP.NET中使用COM對象 891
28.4 在COM客戶程序中使用.NET組件 892
28.4.1 COM Callable Wrapper 892
28.4.2 創(chuàng)建.NET組件 892
28.4.3 創(chuàng)建類型庫 893
28.4.4 COM互操作特性 896
28.4.5 COM注冊 899
28.4.6 創(chuàng)建COM客戶程序 900
28.4.7 添加連接點 901
28.4.8 用sink對象創(chuàng)建客戶 902
28.4.9 在Internet Explorer中運行Windows窗體控件 903
28.5 小結 904
第29章 Enterprise Services 905
29.1 概述 905
29.1.1 Enterprise Services簡史 905
29.1.2 使用Enterprise Services的場合 905
29.1.3 環(huán)境 906
29.1.4 自動的事務處理 906
29.1.5 分布式事務處理 907
29.1.6 對象池 907
29.1.7 基于角色的安全性 907
29.1.8 排隊的組件 907
29.1.9 松散藕合的事件 907
29.2 創(chuàng)建簡單的COM+應用程序 908
29.2.1 類ServicedComponent 908
29.2.2 應用程序屬性 908
29.2.3 創(chuàng)建組件 909
29.3 部署 910
29.3.1 自動部署 910
29.3.2 手工部署 910
29.4 組件服務管理工具 911
29.5 客戶應用程序 913
29.6 事務處理 913
29.6.1 ACID屬性 914
29.6.2 事務處理的屬性 914
29.6.3 事務處理的結果 915
29.6.4 示例應用程序 915
29.7 小結 926
第30章 文件和注冊表操作 927
30.1 管理文件系統(tǒng) 927
30.1.1 表示文件和文件夾的.NET類 928
30.1.2 Path類 930
30.1.3 示例:文件瀏覽器 931
30.2 移動、復制和刪除文件 936
30.3 讀寫文件 941
30.3.1 流 941
30.3.2 讀寫二進制文件 942
30.3.3 讀寫文本文件 948
30.4 讀寫注冊表 954
30.4.1 注冊表 954
30.4.2 .NET注冊表類 956
30.4.3 SelfPlacingWindow示例 958
30.5 小結 964
第31章 訪問Internet 965
31.1 WebClient類 965
31.1.1 下載文件 966
31.1.2 基本的Web客戶示例 966
31.1.3 上傳文件 967
31.2 WebRequest類和WebResponse類 968
31.3 把輸出結果顯示為HTML頁面 971
31.4 實用工具類 974
31.4.1 URI 974
31.4.2 IP地址和DNS名稱 976
31.5 較低層的協(xié)議 978
31.6 小結 985
第32章 Windows服務 986
32.1 Windows服務 986
32.2 Windows服務的體系結構 987
32.2.1 服務程序 987
32.2.2 服務控制程序 989
32.2.3 服務配置程序 989
32.3 System.ServiceProcess命名空間 989
32.4 創(chuàng)建Windows服務 989
32.4.1 使用套接字的類庫 990
32.4.2 TcpClient示例 994
32.4.3 Windows服務項目 996
32.4.4 線程和服務 1001
32.4.5 服務的安裝 1001
32.4.6 安裝程序 1001
32.5 服務的監(jiān)視和控制 1006
32.5.1 MMC計算機管理 1006
32.5.2 net.exe 1007
32.5.3 sc.exe 1008
32.5.4 Visual Studio .NET Server Explorer 1009
32.5.5 ServiceController類 1009
32.6 故障排除 1015
32.6.1 交互式服務 1015
32.6.2 事件日志 1016
32.6.3 性能監(jiān)視 1022
32.7 電源事件 1027
32.8 小結 1027