注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì).NETC#和.NET實(shí)戰(zhàn):平臺(tái)、語(yǔ)言與框架

C#和.NET實(shí)戰(zhàn):平臺(tái)、語(yǔ)言與框架

C#和.NET實(shí)戰(zhàn):平臺(tái)、語(yǔ)言與框架

定 價(jià):¥99.00

作 者: Patrick Smacchia
出版社: 人民郵電出版社
叢編項(xiàng): 圖靈程序設(shè)計(jì)叢書
標(biāo) 簽: .NET

購(gòu)買這本書可以去


ISBN: 9787115166203 出版時(shí)間: 2007-12-01 包裝: 平裝
開本: 16 頁(yè)數(shù): 765 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書是一本知識(shí)密集的C# 技術(shù)經(jīng)典圖書,Microsoft .NET MVP 力作,眾多.NET 專家口口相傳的一本秘籍。全書分為三個(gè)部分,第一部分講述底層的.NET 平臺(tái),涵蓋了.NET 各方面的基礎(chǔ)知識(shí)和工作原理;第二部分是C# 語(yǔ)言部分,通過(guò)與C++ 比較的方式進(jìn)行講解,清晰易懂;第三部分講述.NETFramework 中的基本類庫(kù),內(nèi)容幾乎涉及.NET 常見(jiàn)領(lǐng)域的全部知識(shí)。本書主要面向熟悉.NET 的編程人員,也適合.NET 技術(shù)的初學(xué)者閱讀。

作者簡(jiǎn)介

暫缺《C#和.NET實(shí)戰(zhàn):平臺(tái)、語(yǔ)言與框架》作者簡(jiǎn)介

圖書目錄

第1章 .NET簡(jiǎn)介        1
1.1 什么是.NET        1
1.1.1 微軟軟件開發(fā)平臺(tái)        1
1.1.2 一組規(guī)范        1
1.1.3 .NET概覽        1
1.2 發(fā)展歷程        2
1.2.1 過(guò)去        2
1.2.2 現(xiàn)在        2
1.2.3 未來(lái)        3
1.3 微軟和Windows以外的.NET        3
1.3.1 ECMA組織與.NET        3
1.3.2 W3C聯(lián)盟        4
1.3.3 Mono項(xiàng)目        4
1.3.4 微軟SSCLI項(xiàng)目        4
1.4 .NET資源鏈接        5
1.4.1 網(wǎng)站        5
1.4.2 新聞組        5
1.4.3 博客        6
第一部分 .NET平臺(tái)
第2章 程序集、模塊和IL語(yǔ)言        10
2.1 程序集、模塊和資源文件        10
2.1.1 程序集和模塊        10
2.1.2 資源文件        10
2.1.3 程序集、模塊、類型和資源        10
2.1.4 為何對(duì)多模塊程序集感興趣        11
2.1.5 ILMerge工具        11
2.2 模塊的剖析        11
2.2.1 可移植的可執(zhí)行文件簡(jiǎn)介        11
2.2.2 模塊的結(jié)構(gòu)        11
2.2.3 清單的結(jié)構(gòu)        12
2.2.4 類型元數(shù)據(jù)段的結(jié)構(gòu)        12
2.3 使用ildasm.exe和Reflector工具分析程序集        14
2.3.1 創(chuàng)建需要分析的程序集        14
2.3.2 使用ildasm.exe分析模塊        15
2.3.3 Reflector工具        16
2.4 程序集attribute和版本設(shè)定        17
2.4.1 程序集的標(biāo)準(zhǔn)attribute        17
2.4.2 程序集的版本設(shè)定        18
2.4.3 友元程序集        18
2.5 強(qiáng)名稱程序集        19
2.5.1 簡(jiǎn)介        19
2.5.2 sn.exe工具        19
2.5.3 公鑰記號(hào)        20
2.5.4 為程序集簽名        21
2.5.5 具體示例        21
2.5.6 程序集的延遲簽名        23
2.6 國(guó)際化/本地化與衛(wèi)星程序集        23
2.6.1 區(qū)域設(shè)置和本地化        23
2.6.2 資源文件        24
2.6.3 在代碼中使用資源        25
2.6.4 創(chuàng)建衛(wèi)星程序集        26
2.6.5 部署和使用衛(wèi)星程序集        26
2.6.6 避免在資源無(wú)法找到時(shí)引發(fā)異常        27
2.6.7 Visual Studio與衛(wèi)星程序集        28
2.6.8 區(qū)域設(shè)置與字符串格式化        28
2.7 IL語(yǔ)言簡(jiǎn)介        29
2.7.1 棧及其特殊的IL指令        29
2.7.2 示例1:局部變量與棧        29
2.7.3 示例2:方法調(diào)用與棧        30
2.7.4 用于比較、分支和跳轉(zhuǎn)的IL指令        31
2.7.5 IL的面向?qū)ο筇匦?nbsp;       32
2.7.6 元數(shù)據(jù)符號(hào)        32
第3章 生成、部署以及配置.NET應(yīng)用程序        34
3.1 用MSBuild生成應(yīng)用程序        34
3.2 MSBuild:目標(biāo)、任務(wù)、屬性、項(xiàng)與條件        34
3.2.1 .proj文件、目標(biāo)與任務(wù)        34
3.2.2 屬性        36
3.2.3 項(xiàng)        36
3.2.4 條件        37
3.3 高級(jí) MSBuild        38
3.3.1 增量生成與目標(biāo)間的依賴        38
3.3.2 MSBuild轉(zhuǎn)換        38
3.3.3 將一個(gè)MSBuild項(xiàng)目分解到多個(gè)文件        39
3.3.4 Visual Studio 2005如何利用MSBuild        39
3.3.5 創(chuàng)建自定義MSBuild任務(wù)        39
3.4 配置文件        41
3.4.1 machine.config文件        41
3.4.2 標(biāo)準(zhǔn)配置參數(shù)        41
3.4.3 使用 < appSettings >元素定義配置參數(shù)        42
3.4.4 使用配置節(jié)定義配置參數(shù)        42
3.4.5 使用Visual Studio 2005創(chuàng)建配置節(jié)        44
3.4.6 配置節(jié)的注意事項(xiàng)        44
3.5 程序集部署:XCopy與GAC        45
3.5.1 XCopy部署        45
3.5.2 共享程序集與GAC文件夾        45
3.5.3 GAC的并存存儲(chǔ)模型是如何解決DLL hell問(wèn)題的        46
3.5.4 并存執(zhí)行        46
3.5.5 查看及編輯GAC文件夾        46
3.6 發(fā)布者策略程序集        47
3.6.1 潛在的問(wèn)題        47
3.6.2 解決方案        47
3.6.3 創(chuàng)建發(fā)布者策略程序集        48
3.7 .NET應(yīng)用程序部署簡(jiǎn)介        49
3.7.1 MSI、cab、XCopy、ClickOnce 和NTD之間的對(duì)比        49
3.7.2 MSI與ClickOnce的對(duì)比        50
3.8 使用cab文件部署應(yīng)用程序        50
3.9 使用MSI技術(shù)部署應(yīng)用程序        52
3.9.1 添加文件        52
3.9.2 安裝快捷方式        52
3.9.3 在GAC文件夾中添加一個(gè)共享程序集        52
3.9.4 安裝項(xiàng)目屬性        53
3.9.5 更新注冊(cè)表        53
3.9.6 指定在安裝期間執(zhí)行的自定義動(dòng)作        53
3.9.7 為安裝提供一個(gè)自定義用戶界面        54
3.10 使用ClickOnce技術(shù)部署應(yīng)用程序        54
3.10.1 部署文件夾        54
3.10.2 為ClickOnce部署做準(zhǔn)備        55
3.10.3 ClickOnce部署與移動(dòng)代碼安全        56
3.10.4 按需安裝與下載組        57
3.10.5 更新一個(gè)使用ClickOnce安裝的應(yīng)用程序        58
3.10.6 應(yīng)用程序所需的CAS權(quán)限集的工作機(jī)制        58
3.10.7 ClickOnce應(yīng)用程序安裝與執(zhí)行的細(xì)節(jié)        59
3.11 使用無(wú)接觸部署(NTD)技術(shù)部署應(yīng)用程序        60
3.12 如果目標(biāo)機(jī)器上沒(méi)有安裝.NET運(yùn)行庫(kù)怎么辦        61
第4章 CLR        62
4.1 應(yīng)用程序域        62
4.1.1 簡(jiǎn)介        62
4.1.2 線程與AppDomain        62
4.1.3 卸載AppDomain        63
4.1.4 AppDomain和孤立性        63
4.1.5 System.AppDomain類        63
4.1.6 在一個(gè)進(jìn)程中承載多個(gè)應(yīng)用程序        63
4.1.7 在其他AppDomain的上下文中運(yùn)行代碼        65
4.1.8 AppDomain類的事件        65
4.1.9 在同一個(gè)進(jìn)程的AppDomain之間共享信息        66
4.2 在Windows進(jìn)程內(nèi)通過(guò)運(yùn)行庫(kù)宿主加載CLR        67
4.2.1 mscorsvr.dll和mscorwks.dll        67
4.2.2 mscorlib.dll程序集        67
4.2.3 運(yùn)行庫(kù)宿主介紹        67
4.2.4 在同一臺(tái)計(jì)算機(jī)上承載多個(gè)版本的CLR        68
4.2.5 使用CorBindToRuntimeEx()函數(shù)加載CLR        68
4.2.6 創(chuàng)建一個(gè)自定義的運(yùn)行庫(kù)宿主        69
4.2.7 在自定義運(yùn)行庫(kù)宿主中調(diào)整CLR        71
4.2.8 SQL Server 2005運(yùn)行庫(kù)宿主的特性        71
4.3 剖析.NET應(yīng)用程序的執(zhí)行狀況        73
4.4 定位和加載程序集        73
4.4.1 CLR何時(shí)嘗試定位程序集        74
4.4.2 CLR使用的定位算法        74
4.4.3 配置文件的 < assemblyBinding >元素        75
4.4.4 定位算法示意圖        76
4.4.5 影子復(fù)制機(jī)制        76
4.5 運(yùn)行庫(kù)類型解析        77
4.5.1 顯式或隱式加載程序集        77
4.5.2 編譯時(shí)引用程序集        78
4.5.3 示例        78
4.5.4 類型解析算法示意圖        79
4.6 JIT(即時(shí))編譯        79
4.6.1 可移植的二進(jìn)制代碼        79
4.6.2 即時(shí)編譯技術(shù)簡(jiǎn)介        80
4.6.3 ngen.exe工具        81
4.6.4 性能計(jì)數(shù)器與JIT編譯        81
4.7 垃圾收集器和托管堆        83
4.7.1 垃圾收集技術(shù)簡(jiǎn)介        83
4.7.2 垃圾收集算法遇到的問(wèn)題        83
4.7.3 .NET的GC        84
4.7.4 第一步:尋找根對(duì)象        84
4.7.5 第二步:建立活動(dòng)對(duì)象樹        84
4.7.6 第三步:解除分配非活動(dòng)對(duì)象        84
4.7.7 第四步:清理堆碎片        85
4.7.8 第五步:重新計(jì)算托管引用所使用的物理地址        85
4.7.9 推薦做法        85
4.7.10 針對(duì)大對(duì)象的特殊堆        86
4.7.11 多線程環(huán)境下的垃圾收集        86
4.7.12 弱引用        86
4.7.13 使用System.GC類影響GC的行為        87
4.8 提高代碼可靠性的機(jī)制        89
4.8.1 異步異常及托管代碼可靠性        89
4.8.2 受約束執(zhí)行區(qū)域        90
4.8.3 如何定義CER        90
4.8.4 內(nèi)存門        90
4.8.5 可靠性契約        91
4.8.6 關(guān)鍵終結(jié)器        91
4.8.7 臨界區(qū)        92
4.9 CLI和CLS        92
4.9.1 .NET語(yǔ)言必須滿足的要求        92
4.9.2 從開發(fā)人員的觀點(diǎn)看CLI和CLS        93
第5章 進(jìn)程、線程與同步        94
5.1 簡(jiǎn)介        94
5.2 進(jìn)程        94
5.2.1 簡(jiǎn)介        94
5.2.2 System.Diagnostics.Process類        95
5.2.3 創(chuàng)建和銷毀子進(jìn)程        95
5.2.4 避免在一臺(tái)機(jī)器上同時(shí)運(yùn)行同一應(yīng)用程序的多個(gè)實(shí)例        95
5.2.5 終止當(dāng)前進(jìn)程        96
5.3 線程        96
5.3.1 簡(jiǎn)介        96
5.3.2 受托管的線程與Windows線程        97
5.3.3 搶占式多任務(wù)處理        97
5.3.4 進(jìn)程與線程的優(yōu)先級(jí)        97
5.3.5 System.Threading.Thread類        98
5.3.6 創(chuàng)建與聯(lián)結(jié)線程        99
5.3.7 掛起線程        99
5.3.8 終止線程        100
5.3.9 前臺(tái)線程與后臺(tái)線程        100
5.3.10 受托管線程的狀態(tài)圖        101
5.4 訪問(wèn)資源同步簡(jiǎn)介        101
5.4.1 競(jìng)態(tài)條件        101
5.4.2 死鎖        102
5.5 使用volatile字段與Interlocked類實(shí)現(xiàn)同步        102
5.5.1 volatile字段        102
5.5.2 System.Threading.Inter-locked類        103
5.5.3 Interlocked類提供的其他功能        104
5.6 使用System.Threading.Monitor類與C#的lock關(guān)鍵字實(shí)現(xiàn)同步        104
5.6.1 Enter()方法和Exit()方法        104
5.6.2 C#的lock關(guān)鍵字        105
5.6.3 SyncRoot模式        106
5.6.4 線程安全類        106
5.6.5 Monitor.TryEnter()方法        107
5.6.6 Monitor類的Wait()方法、Pulse()方法以及PulseAll()方法        107
5.7 使用Win32對(duì)象同步:互斥體、事件與信號(hào)量        109
5.7.1 共享Win32同步對(duì)象        109
5.7.2 互斥體        110
5.7.3 事件        110
5.7.4 信號(hào)量        112
5.8 利用System.Threading.Reader-WriterLock類實(shí)現(xiàn)同步        113
5.9 利用System.Runtime.Remoting.Contexts.SynchronizationAttr-ibute實(shí)現(xiàn)同步        114
5.9.1 同步域簡(jiǎn)介        115
5.9.2 System.Runtime.Remoting.Contexts.Synchronization與同步域        116
5.9.3 重入與同步域        117
5.9.4 另一個(gè)名為Synchronization 的attribute        119
5.10 CLR的線程池        119
5.10.1 簡(jiǎn)介        119
5.10.2 使用線程池        120
5.11 定時(shí)器        121
5.11.1 System.Timers.Timer類        121
5.11.2 System.Threading.Timer類        122
5.11.3 System.Windows.Forms.Timer類        123
5.12 異步方法調(diào)用        123
5.12.1 異步委托        123
5.12.2 回調(diào)方法        124
5.12.3 向回調(diào)方法傳遞狀態(tài)        125
5.12.4 one-way調(diào)用        126
5.13 線程—資源親緣性        126
5.13.1 System.ThreadStatic-Attribute        127
5.13.2 線程本地存儲(chǔ)(TLS)        127
5.13.3 System.ComponentModel. ISynchronizeInvoke接口        130
5.14 執(zhí)行上下文簡(jiǎn)介        130
第6章 安全性        133
6.1 代碼訪問(wèn)安全性(CAS)概述        133
6.1.1 什么是移動(dòng)代碼        133
6.1.2 CAS:全局觀        133
6.1.3 給程序集代碼授予權(quán)限        134
6.1.4 在運(yùn)行程序集的代碼時(shí)檢查權(quán)限        134
6.2 CAS:證據(jù)和權(quán)限        134
6.2.1 什么是證據(jù)        134
6.2.2 .NET Framework所提供的標(biāo)準(zhǔn)證據(jù)        134
6.2.3 誰(shuí)提供證據(jù)        137
6.2.4 權(quán)限        137
6.2.5 標(biāo)準(zhǔn)權(quán)限        137
6.2.6 標(biāo)識(shí)權(quán)限        138
6.2.7 安全權(quán)限        138
6.2.8 自定義權(quán)限        138
6.3 CAS:通過(guò)應(yīng)用安全策略根據(jù)證據(jù)授予權(quán)限        139
6.3.1 安全策略級(jí)別        139
6.3.2 剖析安全策略        139
6.3.3 用于應(yīng)用安全策略的算法        139
6.3.4 默認(rèn)安全策略配置        140
6.3.5 配置安全策略        141
6.4 CAS:FullTrust權(quán)限        142
6.5 CAS:從源代碼進(jìn)行命令式的權(quán)限檢查        142
6.5.1 CodeAccessPermissions類和PermissionSet類        143
6.5.2 Demand()方法        143
6.5.3 Deny()方法、RevertDeny()方法、PermitOnly()方法和RevertPermitOnly()方法        143
6.5.4 Assert()方法和RevertAssert()方法        144
6.5.5 FromXml()方法和ToXml()方法        145
6.5.6 System.Security.IPermission接口        145
6.6 CAS:使用attribute進(jìn)行聲明式的權(quán)限檢查        145
6.6.1 加載程序集時(shí)調(diào)整所授權(quán)限集合的attribute        146
6.6.2 命令式與聲明式的對(duì)比        146
6.7 CAS:測(cè)試和調(diào)試移動(dòng)代碼的實(shí)用機(jī)制        147
6.8 CAS:獨(dú)立存儲(chǔ)區(qū)權(quán)限        147
6.9 .NET、Windows 用戶與角色        147
6.9.1 Windows安全簡(jiǎn)介        148
6.9.2 IIdentity接口與IPrincipal接口        149
6.9.3 Windows 安全標(biāo)識(shí)符        149
6.9.4 在底層Windows線程中模擬用戶        150
6.10 .NET與Windows資源的訪問(wèn)控制        151
6.10.1 Windows訪問(wèn)控制簡(jiǎn)介        151
6.10.2 在.NET代碼中使用特殊的SD        152
6.10.3 在.NET代碼中使用通用的SD        154
6.11 .NET與角色        155
6.11.1 定義應(yīng)用程序域的主體策略        155
6.11.2 檢查用戶是否屬于某個(gè)特定角色        156
6.11.3 COM+角色        157
6.12 .NET與密碼學(xué):對(duì)稱算法        158
6.12.1 對(duì)稱算法概述        158
6.12.2 .NET Framework與對(duì)稱算法        158
6.13 .NET與密碼學(xué):非對(duì)稱算法(公鑰/私鑰)        160
6.13.1 非對(duì)稱算法概述        160
6.13.2 安全會(huì)話簡(jiǎn)介        161
6.13.3 RSA 算法        161
6.13.4 非對(duì)稱算法與數(shù)字簽名        161
6.13.5 .NET Framework與RSA算法        162
6.14 數(shù)據(jù)保護(hù)API        163
6.14.1 Windows的數(shù)據(jù)保護(hù)API        163
6.14.2 System.Security.Crypto-graphy.ProtectedData類        163
6.14.3 System.Security.Crypto-graphy.ProtectedMemory類        164
6.14.4 System.Security.SecureString類        164
6.14.5 保護(hù)配置文件中的數(shù)據(jù)        165
6.14.6 確保網(wǎng)絡(luò)傳輸中數(shù)據(jù)的安全        166
6.15 使用Authenticode 技術(shù)與X.509證書驗(yàn)證程序集        166
6.15.1 Authenticode與強(qiáng)名稱        166
6.15.2 證書與證書認(rèn)證中心        167
6.15.3 根證書        167
6.15.4 Windows、.NET與Authenti- code技術(shù)        167
第7章 反射、后期綁定與attribute        168
7.1 反射        168
7.1.1 何時(shí)需要反射        168
7.1.2 .NET反射有何新意        168
7.1.3 對(duì)載入AppDomain的程序集的反射        170
7.1.4 從元數(shù)據(jù)獲取信息        170
7.2 后期綁定        171
7.2.1 “綁定類”的含義        171
7.2.2 早期綁定與動(dòng)態(tài)綁定        172
7.2.3 后期綁定        172
7.2.4 在C#編譯到IL期間如何實(shí)例化一個(gè)未知的類        173
7.2.5 使用后期綁定        176
7.2.6 利用接口:使用后期綁定的正確方法        178
7.3 attribute        180
7.3.1 attribute是什么        180
7.3.2 何時(shí)需要attribute        180
7.3.3 關(guān)于attribute應(yīng)該知道的事        180
7.3.4 可以應(yīng)用attribute的代碼元素        181
7.3.5 .NET Framework中的一些標(biāo)準(zhǔn)attribute        181
7.3.6 自定義的attribute的示例        182
7.3.7 條件attribute        185
7.4 動(dòng)態(tài)生成程序集并在運(yùn)行中使用        185
7.4.1 為什么要考慮動(dòng)態(tài)生成程序集        185
7.4.2 一個(gè)實(shí)際的問(wèn)題        186
7.4.3 理想的第三種解決方案——?jiǎng)討B(tài)創(chuàng)建程序集        187
7.4.4 將程序集保存到磁盤上的能力        190
7.4.5 結(jié)論        190
第8章 .NET與本機(jī)代碼/COM/COM+之間的互操作性        191
8.1 P/Invoke        191
8.1.1 DllImportAttribute        191
8.1.2 類型轉(zhuǎn)換        192
8.1.3 使用指針傳遞參數(shù)        193
8.1.4 傳遞字符串        193
8.1.5 傳遞結(jié)構(gòu)與聯(lián)合        195
8.1.6 方向attribute        196
8.1.7 委托與非托管的函數(shù)指針        196
8.2 C++/CLI語(yǔ)言互操作性簡(jiǎn)介        196
8.2.1 IJW功能        196
8.2.2 托管類型與非托管類型共存        197
8.2.3 在本機(jī)代碼中使用托管對(duì)象        199
8.3 .NET與Win32句柄        200
8.3.1 簡(jiǎn)介        200
8.3.2 HandleCollector類        201
8.3.3 SafeHandle類與Critical-Handle類        201
8.4 在.NET 中使用COM 對(duì)象        201
8.4.1 類型元數(shù)據(jù)與類型庫(kù)        201
8.4.2 Interop程序集與Runtime Callable Wrapper類        202
8.4.3 訪問(wèn)不使用類型庫(kù)的COM組件中的COM類        204
8.4.4 使用Visual Studio導(dǎo)入ActiveX        204
8.4.5 使用RCW類時(shí)需要牢記的COM特性        205
8.4.6 COM類的顯式后期綁定        206
8.4.7 免注冊(cè)COM        207
8.5 將.NET對(duì)象包裝成CCW        208
8.5.1 CCW簡(jiǎn)介        208
8.5.2 從.NET程序集中生成描述CCW類的COM類型庫(kù)        209
8.5.3 在操作系統(tǒng)上注冊(cè)CCW        211
8.5.4 將.NET程序集作為COM組件使用        212
8.5.5 .NET異常與CCW        213
8.5.6 處理對(duì)象生命周期        213
8.6 COM+簡(jiǎn)介        214
8.6.1 COM+是什么        214
8.6.2 在.NET中使用COM+:企業(yè)服務(wù)        214
8.7 COM+企業(yè)服務(wù)簡(jiǎn)介        214
8.7.1 COM+企業(yè)服務(wù)的完整列表        214
8.7.2 你需要COM+企業(yè)服務(wù)嗎        215
8.8 在.NET類中利用COM+服務(wù)        216
8.8.1 服務(wù)組件簡(jiǎn)介        216
8.8.2 聲明服務(wù)組件使用的企業(yè)服務(wù)        216
8.8.3 COM+上下文與服務(wù)組件        217
8.8.4 COM+應(yīng)用程序簡(jiǎn)介        217
8.8.5 COM+目錄        218
8.8.6 COM+應(yīng)用程序的激活模式        218
8.8.7 安裝服務(wù)組件        219
8.8.8 查看并操作COM+目錄        221
8.8.9 構(gòu)建一個(gè)使用服務(wù)組件的客戶        221
第二部分 C#語(yǔ)言
第9章 語(yǔ)言基本概念        224
9.1 源代碼組織        224
9.1.1 命名空間        224
9.1.2 命名空間中可聲明的全套語(yǔ)法元素        225
9.1.3 C#項(xiàng)目的結(jié)構(gòu)        226
9.1.4 命名空間和程序集的組織        226
9.2 編譯步驟        226
9.3 預(yù)處理器        227
9.3.1 預(yù)處理符號(hào)與條件編譯        227
9.3.2 預(yù)處理符號(hào)與條件attribute        228
9.3.3 #error指令和#warning指令        228
9.3.4 #pragma warning disable 指令和#pragma warning restore指令        229
9.3.5 #line指令        229
9.3.6 #region指令和#endregion指令        230
9.4 csc.exe編譯器        230
9.5 別名機(jī)制        232
9.5.1 創(chuàng)建命名空間和類型的別名        232
9.5.2 命名空間別名限定符        232
9.5.3 全局限定符        233
9.5.4 外部別名        234
9.6 注釋和自動(dòng)文檔        234
9.6.1 注釋        234
9.6.2 使用Visual Studio的任務(wù)列表        235
9.6.3 自動(dòng)文檔        235
9.7 標(biāo)識(shí)符        237
9.8 控制結(jié)構(gòu)        237
9.8.1 條件語(yǔ)句(if/else、?:和switch)        238
9.8.2 循環(huán)語(yǔ)句(do、while、for和foreach)        241
9.8.3 goto語(yǔ)句        243
9.9 Main()方法        243
第10章 從C# 2.0的角度看.NET 2.0類型系統(tǒng)        245
10.1 對(duì)象在內(nèi)存中的存儲(chǔ)        245
10.1.1 對(duì)象的分配和解除分配        245
10.1.2 托管線程棧        245
10.1.3 托管堆        245
10.1.4 對(duì)象存儲(chǔ):托管線程棧與托管堆的比較        246
10.1.5 靜態(tài)分配與動(dòng)態(tài)分配的比較        246
10.2 引用類型和值類型        246
10.3 公共類型系統(tǒng)(CTS)        249
10.3.1 .NET類型不與任何編程語(yǔ)言關(guān)聯(lián)        249
10.3.2 CTS:全局觀        249
10.4 System.Object類        249
10.5 對(duì)象比較        251
10.5.1 等價(jià)與恒等        251
10.5.2 自定義相等比較規(guī)則        252
10.5.3 相等性與散列表        252
10.5.4 自定義大小比較規(guī)則        253
10.6 對(duì)象克隆        253
10.7 裝箱和拆箱        255
10.7.1 裝箱        255
10.7.2 裝箱導(dǎo)致的危險(xiǎn)問(wèn)題        256
10.7.3 拆箱        257
10.8 基本類型        257
10.8.1 整型        258
10.8.2 實(shí)型        259
10.8.3 布爾型        260
10.8.4 字符型        260
10.8.5 整數(shù)和字符串之間的轉(zhuǎn)換        260
10.9 基本類型的運(yùn)算        261
10.9.1 同一基本類型上的算術(shù)運(yùn)算        261
10.9.2 處理被零除的錯(cuò)誤        262
10.9.3 處理溢出        262
10.9.4 運(yùn)算符的優(yōu)先級(jí)        262
10.9.5 前綴和后綴遞增/遞減運(yùn)算符        263
10.9.6 不同基本類型之間的算術(shù)運(yùn)算        263
10.9.7 位運(yùn)算        264
10.10 結(jié)構(gòu)        265
10.11 枚舉        267
10.11.1 枚舉和整型        267
10.11.2 System.Enum類        268
10.11.3 位域(一組標(biāo)志)        269
10.12 字符串        269
10.12.1 System.String類        269
10.12.2 字符串字面常量        270
10.12.3 無(wú)轉(zhuǎn)義字符串字面常量        270
10.12.4 使用字符串        271
10.12.5 格式化字符串        272
10.12.6 System.Text.StringBui-lder類        273
10.13 委托類和委托對(duì)象        275
10.13.1 簡(jiǎn)介        275
10.13.2 委托對(duì)象與靜態(tài)方法        275
10.13.3 C# 2.0編譯器的委托類推測(cè)功能        276
10.13.4 委托對(duì)象與實(shí)例方法        276
10.13.5 用一個(gè)委托對(duì)象引用多個(gè)方法        277
10.13.6 System.Delegate類        278
10.13.7 更改引用方法列表        279
10.14 可空類型        280
10.14.1 值類型和空值范式        280
10.14.2 System.Nullable < T >結(jié)構(gòu)        280
10.14.3 C#語(yǔ)法革新:Nullable < T >關(guān)鍵字和null關(guān)鍵字        281
10.14.4 C#語(yǔ)法革新:Nullable < T >的等價(jià)寫法T?        282
10.14.5 C# 2.0中bool?的無(wú)差別對(duì)待        283
10.14.6 可空類型與裝箱/拆箱        283
10.14.7 可空結(jié)構(gòu)和可空枚舉        284
10.15 部分類型        285
10.15.1 必須在每個(gè)部分聲明上重復(fù)出現(xiàn)的類型聲明元素        285
10.15.2 在每個(gè)部分聲明上可選重復(fù)出現(xiàn)的類型聲明元素        286
10.15.3 在多個(gè)部分聲明上重復(fù)出現(xiàn)就會(huì)累積效果的類型聲明元素        286
10.15.4 僅在某個(gè)部分聲明上起作用的類型聲明元素        286
第11章 類和對(duì)象        287
11.1 簡(jiǎn)介        287
11.2 術(shù)語(yǔ)        287
11.3 類的定義        288
11.4 字段        288
11.4.1 字段初始化        289
11.4.2 常數(shù)字段        289
11.4.3 字段初始化的潛在問(wèn)題        290
11.5 方法        290
11.5.1 按值或按引用傳遞參數(shù)        290
11.5.2 C#的默認(rèn)規(guī)則        291
11.5.3 按引用傳遞任意參數(shù)        291
11.5.4 在引用類型上使用ref關(guān)鍵字        292
11.5.5 參數(shù)初始化        292
11.5.6 輸出參數(shù)        293
11.5.7 params關(guān)鍵字        294
11.5.8 方法重載        294
11.6 屬性        295
11.6.1 get訪問(wèn)器        296
11.6.2 set訪問(wèn)器        296
11.6.3 關(guān)于屬性的注釋        297
11.7 索引器        297
11.8 事件        298
11.8.1 介紹        298
11.8.2 C#語(yǔ)法        298
11.8.3 一個(gè)實(shí)際的例子        299
11.8.4 異步事件處理        301
11.8.5 在同步條件下保護(hù)代碼不受訂閱者方法所拋異常的影響        302
11.9 嵌套類型        302
11.10 封裝性和可見(jiàn)性        303
11.10.1 成員的可見(jiàn)性        303
11.10.2 類型的可見(jiàn)性        304
11.10.3 屬性和索引器訪問(wèn)器的可見(jiàn)性        304
11.10.4 私有成員的附加說(shuō)明        304
11.10.5 IL語(yǔ)言可見(jiàn)性的附加說(shuō)明        304
11.11 this關(guān)鍵字        304
11.12 構(gòu)造函數(shù)        305
11.12.1 構(gòu)造函數(shù)的聲明        305
11.12.2 創(chuàng)建對(duì)象時(shí)訪問(wèn)構(gòu)造函數(shù)        306
11.13 對(duì)象終結(jié)和析構(gòu)        307
11.13.1 析構(gòu)函數(shù)、終結(jié)器和Object.Finalize()方法        307
11.13.2 IDisposable接口和Dispose()方法        308
11.13.3 何時(shí)需要終結(jié)器和Dispose()方法        310
11.14 靜態(tài)成員        312
11.14.1 靜態(tài)字段、屬性和事件        312
11.14.2 靜態(tài)方法        313
11.14.3 靜態(tài)構(gòu)造函數(shù)        313
11.14.4 靜態(tài)類        314
11.15 運(yùn)算符重載        314
11.15.1 算術(shù)運(yùn)算符的重載        314
11.15.2 類型轉(zhuǎn)換運(yùn)算符的重載        316
11.15.3 比較運(yùn)算符的重載        318
11.15.4 運(yùn)算符重載和CLS        320
第12章 繼承、多態(tài)性與抽象性        321
12.1 目標(biāo):代碼重用        321
12.1.1 潛在問(wèn)題        321
12.1.2 解決方案之一:類的繼承        322
12.2 類的繼承        322
12.2.1 語(yǔ)法        322
12.2.2 保護(hù)及內(nèi)部或保護(hù)可見(jiàn)性級(jí)別        322
12.2.3 類繼承圖        322
12.2.4 調(diào)用基類的構(gòu)造函數(shù)        323
12.2.5 基類成員的可見(jiàn)性        324
12.2.6 封閉類        324
12.3 虛方法和多態(tài)性        324
12.3.1 潛在問(wèn)題        325
12.3.2 解決方案之一:虛方法和多態(tài)性        325
12.3.3 示例一則        325
12.3.4 屏蔽多態(tài)性        327
12.4 抽象性        328
12.4.1 潛在的問(wèn)題        328
12.4.2 解決方案之一:抽象類和抽象方法        328
12.4.3 示例一則        328
12.4.4 同時(shí)使用abstract關(guān)鍵字和override關(guān)鍵字        329
12.5 接口        330
12.5.1 強(qiáng)制代碼使用者使用抽象體代替實(shí)現(xiàn)體        331
12.5.2 解決方法命名的沖突        331
12.5.3 解決接口擴(kuò)展帶來(lái)的沖突        332
12.5.4 覆寫接口的實(shí)現(xiàn)方法        333
12.5.5 接口與結(jié)構(gòu)        334
12.6 虛擬或抽象屬性、事件和索引器        335
12.7 is和as運(yùn)算符        336
12.7.1 is運(yùn)算符        336
12.7.2 as運(yùn)算符        337
12.8 代碼重用的解決方案        338
第13章 泛型        339
13.1 C# 1.0的一個(gè)問(wèn)題以及使用C# 2.0 泛型的解決方法        339
13.1.1 C# 1.0中集合項(xiàng)的類型化問(wèn)題        339
13.1.2 C# 2.0泛型帶來(lái)的理想方案        340
13.2 .NET 2.0泛型概覽        341
13.2.1 聲明多個(gè)類型參數(shù)        341
13.2.2 開放和封閉泛型類型        342
13.2.3 .NET泛型與C++模板的比較        342
13.2.4 泛型類型的可見(jiàn)性        343
13.2.5 泛型結(jié)構(gòu)與接口        344
13.2.6 泛型類型與別名        344
13.3 類型參數(shù)的約束        344
13.3.1 默認(rèn)構(gòu)造函數(shù)約束        345
13.3.2 派生約束        345
13.3.3 引用類型或值類型約束        347
13.4 泛型類型的成員        347
13.4.1 方法重載        347
13.4.2 靜態(tài)字段        348
13.4.3 靜態(tài)方法        349
13.4.4 類構(gòu)造函數(shù)        349
13.4.5 運(yùn)算符重載        349
13.4.6 嵌套類型        350
13.5 運(yùn)算符與泛型        351
13.5.1 類型參數(shù)的相等、不等及比較運(yùn)算符        351
13.5.2 typeof運(yùn)算符與泛型        351
13.5.3 params及l(fā)ock關(guān)鍵字與泛型        352
13.5.4 default運(yùn)算符        352
13.6 類型轉(zhuǎn)換與泛型        353
13.6.1 基本規(guī)則        353
13.6.2 類型轉(zhuǎn)換與泛型數(shù)組        353
13.6.3 is和as運(yùn)算符        353
13.7 繼承與泛型        354
13.7.1 基本規(guī)則        354
13.7.2 覆寫泛型類型的虛方法        354
13.8 泛型方法        355
13.8.1 簡(jiǎn)介        355
13.8.2 泛型方法與約束        356
13.8.3 虛擬泛型方法        356
13.8.4 泛型方法類型參數(shù)的推測(cè)        356
13.8.5 C# 2.0語(yǔ)法的二義性        357
13.9 委托、事件與泛型        358
13.9.1 簡(jiǎn)介        358
13.9.2 泛型委托與泛型方法        358
13.9.3 泛型與委托的協(xié)變性及反變性        359
13.9.4 事件和泛型委托        360
13.10 反射、attribute、IL與泛型        360
13.10.1 泛型與System.Type類        360
13.10.2 泛型與System.Reflection.MethodBase類及System.Reflection.MethodInfo類        362
13.10.3 attribute與泛型        363
13.10.4 IL語(yǔ)言與泛型        364
13.11 .NET Framework 2.0中的泛型        364
13.11.1 對(duì)象序列化與泛型        364
13.11.2 .NET Remoting與泛型        365
13.11.3 集合與泛型        366
13.11.4 不支持泛型的領(lǐng)域        366
第14章 不安全代碼、異常、匿名方法和迭代器        367
14.1 指針和不安全代碼        367
14.1.1 允許不安全代碼的編譯器選項(xiàng)        368
14.1.2 在C#中聲明不安全代碼        368
14.2 在C#中使用指針        368
14.2.1 .NET中支持指針的類型        368
14.2.2 聲明指針        368
14.2.3 提領(lǐng)和間接運(yùn)算符        369
14.2.4 取大小運(yùn)算符        369
14.2.5 指針運(yùn)算        369
14.2.6 指針類型轉(zhuǎn)換        369
14.2.7 雙重指針        369
14.2.8 定址對(duì)象        370
14.2.9 指針和數(shù)組        370
14.2.10 固定數(shù)組        371
14.2.11 使用stackalloc關(guān)鍵字在棧上分配內(nèi)存        372
14.2.12 字符串與指針        372
14.3 利用異常處理錯(cuò)誤        372
14.3.1 潛在問(wèn)題:如何恰當(dāng)處理運(yùn)行時(shí)出現(xiàn)的大多數(shù)錯(cuò)誤        372
14.3.2 C#異常處理簡(jiǎn)介        373
14.4 異常對(duì)象和定義自己的異常類        374
14.4.1 System.Exception類        375
14.4.2 定義自己的異常類        375
14.4.3 從自己的代碼中拋出異常        376
14.4.4 C#的非檢查型異常        377
14.5 catch塊和finally塊        377
14.5.1 catch塊的一些說(shuō)明(異常處理程序)        377
14.5.2 finally塊        378
14.5.3 增加異常語(yǔ)義        378
14.6 從構(gòu)造函數(shù)或終結(jié)器中拋出的異常        379
14.6.1 靜態(tài)構(gòu)造函數(shù)所拋異常或靜態(tài)字段初始化時(shí)所拋異常        379
14.6.2 終結(jié)器所拋異常        380
14.7 異常處理與CLR        380
14.8 異常處理與Visual Studio        382
14.9 異常管理使用指南        382
14.9.1 何時(shí)考慮拋出異常        382
14.9.2 在異常處理程序中做什么        382
14.9.3 在何處放置異常處理程序        383
14.9.4 異常與返回錯(cuò)誤代碼的對(duì)比        383
14.9.5 永遠(yuǎn)不要預(yù)測(cè)bug造成的后果能夠被異常處理程序所捕獲        383
14.10 匿名方法        383
14.10.1 C# 2.0匿名方法簡(jiǎn)介        383
14.10.2 匿名方法可以接受參數(shù)        385
14.10.3 一個(gè)精妙的特殊語(yǔ)法        386
14.10.4 匿名方法與泛型        386
14.10.5 匿名方法的實(shí)際應(yīng)用        386
14.11 C# 2.0編譯器與匿名方法        387
14.11.1 簡(jiǎn)單的方式        387
14.11.2 捕獲局部變量        388
14.11.3 捕獲的局部變量與代碼復(fù)雜性        389
14.11.4 匿名方法訪問(wèn)外圍方法的參數(shù)        391
14.11.5 匿名方法訪問(wèn)外圍類的成員        391
14.12 匿名方法的高級(jí)用法        392
14.12.1 定義:閉包與詞法環(huán)境        392
14.12.2 漫談閉包        393
14.12.3 使用閉包代替類        393
14.12.4 委托與閉包        394
14.12.5 使用匿名方法處理集合        395
14.13 C# 1.x迭代器        395
14.13.1 可枚舉對(duì)象、枚舉器和Iterator設(shè)計(jì)模式        395
14.13.2 實(shí)例一則        395
14.13.3 一個(gè)可枚舉對(duì)象對(duì)應(yīng)多個(gè)枚舉器        397
14.13.4 C# 1.x迭代器的缺點(diǎn)        397
14.14 C# 2.0迭代器        397
14.14.1 yield return關(guān)鍵字        397
14.14.2 迭代器與泛型        398
14.14.3 一個(gè)可枚舉對(duì)象對(duì)應(yīng)多個(gè)枚舉        399
14.14.4 yield break關(guān)鍵字        400
14.14.5 yield return關(guān)鍵字和
yield break關(guān)鍵字的語(yǔ)法限制        401
14.14.6 遞歸迭代器實(shí)例        401
14.15 C# 2.0編譯器與迭代器        402
14.15.1 編譯器自動(dòng)創(chuàng)建并使用的枚舉器類        402
14.15.2 關(guān)于生成類的說(shuō)明        404
14.16 C# 2.0迭代器的高級(jí)用法        405
14.16.1 定義:協(xié)同例程和延拓        405
14.16.2 通過(guò)迭代器利用協(xié)同例程和延拓的威力        406
14.16.3 Pipeline模式        407
14.16.4 延拓與多線程的比較        409
14.16.5 C# 2.0迭代器的一個(gè)限制        410
第三部分 .NET Framework
第15章 集合        414
15.1 使用foreach和in關(guān)鍵字迭代訪問(wèn)集合中的項(xiàng)        414
15.1.1 在數(shù)組上使用foreach和in        414
15.1.2 交錯(cuò)數(shù)組上的foreach語(yǔ)法        415
15.1.3 在自定義集合類上支持foreach語(yǔ)法        415
15.2 數(shù)組        415
15.2.1 創(chuàng)建和引用數(shù)組        415
15.2.2 訪問(wèn)數(shù)組的項(xiàng)和處理越界訪問(wèn)        416
15.2.3 交錯(cuò)數(shù)組        417
15.2.4 初始化數(shù)組的項(xiàng)        418
15.2.5 數(shù)組的協(xié)變        419
15.2.6 System.Array類        419
15.2.7 位數(shù)組        421
15.3 序列        422
15.3.1 System.Collections.Generic.ICollection < T >接口        422
15.3.2 System.Collections.Generic.IList < T >接口        423
15.3.3 System.Collections.Generic.List < T >類        423
15.3.4 System.ComponentModel.IBindingList接口和System.ComponentModel.IListSource接口        425
15.3.5 System.Collections.Generic.LinkedList  < T >類        425
15.3.6 字符串列表        426
15.3.7 System.Collections.Generic.Queue < T >類        426
15.3.8 System.Collections.Generic.Stack < T >類        427
15.4 字典        427
15.4.1 System.Collections.Generic.IDictionary < K,V >接口        427
15.4.2 System.Collections.Generic.SortedDictionary < K,V >類        428
15.4.3 System.Collections.Generic.Dictionary < K,V >類        428
15.4.4 迭代訪問(wèn)字典中的項(xiàng)        431
15.5 對(duì)集合中的項(xiàng)進(jìn)行排序        431
15.5.1 IComparer < T >接口和Icom-parable < T >接口        432
15.5.2 對(duì)數(shù)組中的項(xiàng)排序        432
15.5.3 對(duì)List < T >實(shí)例中的元素排序        434
15.6 用于處理集合的函數(shù)對(duì)象        434
15.6.1 特化的委托類型        434
15.6.2 使用匿名方法        435
15.6.3 List < T >類和Array類支持函數(shù)對(duì)象        436
15.6.4 C# 2.0的迭代器和集合        437
15.7 System.Collections.Generic和System.Collections之間的聯(lián)系        438
第16章 基類        439
16.1 數(shù)學(xué)        439
16.1.1 System.Math類        439
16.1.2 System.Random類        440
16.2 時(shí)間、日期和持續(xù)時(shí)間        441
16.2.1 System.DateTime結(jié)構(gòu)        441
16.2.2 System.TimeSpan結(jié)構(gòu)        444
16.2.3 System.Diagnostics. Stopwatch類        445
16.3 驅(qū)動(dòng)器、目錄、文件和路徑        445
16.3.1 操作驅(qū)動(dòng)器        445
16.3.2 操作目錄        446
16.3.3 操作文件        447
16.3.4 操作路徑        448
16.3.5 文件系統(tǒng)監(jiān)視器        448
16.4 注冊(cè)表        450
16.4.1 引言        450
16.4.2 注冊(cè)表的結(jié)構(gòu)        450
16.4.3 注冊(cè)表的層級(jí)        451
16.4.4 用.NET讀/寫注冊(cè)表        451
16.5 調(diào)試        452
16.5.1 用來(lái)自定義對(duì)象調(diào)試時(shí)的視圖的attribute        452
16.5.2 調(diào)試“僅我的代碼”        453
16.5.3 調(diào)試模式        454
16.5.4 解決調(diào)試問(wèn)題        454
16.6 跟蹤        454
16.6.1 監(jiān)聽(tīng)器        455
16.6.2 跟蹤源和源級(jí)別        456
16.6.3 篩選跟蹤源        457
16.6.4 跟蹤縮進(jìn)        457
16.7 正則表達(dá)式        458
16.7.1 引言        458
16.7.2 語(yǔ)法        459
16.7.3 示例        460
16.7.4 .NET和正則表達(dá)式        460
16.7.5 優(yōu)化正則表達(dá)式的求值        460
16.8 控制臺(tái)        462
16.8.1 光標(biāo)        462
16.8.2 顯示        462
16.8.3 大小與位置        462
16.8.4 顏色        462
16.8.5 數(shù)據(jù)輸入        463
16.8.6 重定向控制臺(tái)的流        463
16.8.7 雜項(xiàng)        463
第17章 輸入、輸出和流        464
17.1 流的簡(jiǎn)介        464
17.1.1 流的類層次結(jié)構(gòu)        464
17.1.2 操作流的工具        464
17.1.3 流數(shù)據(jù)的類型化        465
17.1.4 字符串編碼        465
17.2 讀寫文件        466
17.2.1 簡(jiǎn)單的文件讀寫        466
17.2.2 讀寫二進(jìn)制數(shù)據(jù)文件        466
17.2.3 讀寫文本文件        467
17.2.4 以異步的方式操作流        468
17.3 用套接字來(lái)使用TCP/IP        470
17.3.1 套接字和TCP/IP簡(jiǎn)介        470
17.3.2 以同步的方式操作套接字        470
17.3.3 以異步的方式操作套接字        473
17.4 獲取網(wǎng)絡(luò)接口和狀態(tài)的信息        476
17.4.1 發(fā)現(xiàn)可用網(wǎng)絡(luò)接口        476
17.4.2 Ping        477
17.4.3 網(wǎng)絡(luò)發(fā)生更改時(shí)所觸發(fā)的事件        477
17.4.4 網(wǎng)絡(luò)活動(dòng)統(tǒng)計(jì)        477
17.5 HTTP和FTP客戶端        478
17.5.1 URI        478
17.5.2 WebClient類        478
17.5.3 通過(guò)URI訪問(wèn)資源的其他類        479
17.6 在HTTP.SYS上用HttpListener編HTTP服務(wù)器代碼        479
17.6.1 HTTP.SYS簡(jiǎn)介        479
17.6.2 System.Net.HttpListener類        480
17.6.3 以異步方式處理HTTP請(qǐng)求        480
17.7 支持郵件協(xié)議        481
17.8 緩沖和壓縮數(shù)據(jù)流        482
17.8.1 通過(guò)Decorator設(shè)計(jì)模式在流上應(yīng)用服務(wù)        482
17.8.2 緩沖流數(shù)據(jù)        482
17.8.3 壓縮數(shù)據(jù)流        483
17.9 在串行端口上讀寫數(shù)據(jù)        484
17.10 支持安全通訊協(xié)議:SSL、NTLM和Kerberos        484
17.10.1 安全通訊協(xié)議簡(jiǎn)介        484
17.10.2 安全通訊協(xié)議和System.Net.Security命名空間        484
17.10.3 SslStream類        485
17.10.4 NegociateStream類        486
17.10.5 加密數(shù)據(jù)流        487
第18章 Windows Forms應(yīng)用程序        488
18.1 Windows用戶界面        488
18.1.1 控制臺(tái)應(yīng)用程序與窗口應(yīng)用程序        488
18.1.2 Windows消息簡(jiǎn)介        488
18.1.3 Windows應(yīng)用程序開發(fā)的發(fā)展        488
18.1.4 System.Windows.Forms命名空間簡(jiǎn)介        489
18.2 Windows Forms開發(fā)簡(jiǎn)介        490
18.2.1 處理事件        491
18.2.2 編寫方法        492
18.2.3 沒(méi)有Visual Studio的Windows Forms開發(fā)        492
18.3 Windows Forms開發(fā)工具        494
18.3.1 模態(tài)/非模態(tài)對(duì)話框簡(jiǎn)介        494
18.3.2 鼠標(biāo)和鍵盤事件        494
18.3.3 Paint事件        495
18.3.4 異步處理        495
18.3.5 其他特性        497
18.4 標(biāo)準(zhǔn)控件        498
18.4.1 Windows Forms 2.0控件的層次結(jié)構(gòu)        498
18.4.2 新增控件概述        499
18.5 創(chuàng)建自定義控件        500
18.6 顯示和編輯數(shù)據(jù)        504
18.6.1 Visual Studio 2005提供的工具        504
18.6.2 BindingSource控件        507
18.6.3 用BindingSource來(lái)利用數(shù)據(jù)源        508
18.6.4 用對(duì)象列表作為數(shù)據(jù)源        508
18.7 Windows Forms和本地化        509
18.8 GDI+        510
18.8.1 System.Drawing.Graphics類        510
18.8.2 System.Drawing.Pen類        510
18.8.3 System.Drawing.Brush類        511
18.8.4 繪制文本        511
18.8.5 處理圖像        512
18.8.6 優(yōu)化圖像的處理        513
18.8.7 動(dòng)畫和雙緩沖        515
第19章 ADO.NET 2.0        517
19.1 數(shù)據(jù)庫(kù)簡(jiǎn)介        517
19.1.1 DBMS        517
19.1.2 RDBMS        517
19.1.3 SQL語(yǔ)言        517
19.1.4 分布式架構(gòu)的必要性        518
19.2 ADO.NET簡(jiǎn)介        518
19.2.1 連接模式與非連接模式        518
19.2.2 數(shù)據(jù)提供程序        519
19.2.3 ADO.NET:全局觀        520
19.2.4 我們將在范例中使用的DB        520
19.3 連接與數(shù)據(jù)提供程序        522
19.3.1 解除應(yīng)用程序與數(shù)據(jù)提供程序之間的耦合        522
19.3.2 連接字符串        525
19.3.3 如何存儲(chǔ)連接字符串以及連接字符串存儲(chǔ)在哪里        526
19.3.4 連接池        527
19.3.5 訪問(wèn)數(shù)據(jù)源的元數(shù)據(jù)        527
19.4 使用DataReader在連接模式下工作        528
19.4.1 使用DataReader從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)        528
19.4.2 在數(shù)據(jù)庫(kù)端進(jìn)行標(biāo)量運(yùn)算        529
19.4.3 使用SQL查詢來(lái)修改數(shù)據(jù)        530
19.5 使用DataSet在非連接模式下工作        531
19.5.1 使用來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)填充緩存        531
19.5.2 在DataSet中對(duì)多表之間的關(guān)聯(lián)進(jìn)行操作        532
19.5.3 將DataSet中更新的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)        533
19.5.4 非連接模式與樂(lè)觀/悲觀并發(fā)策略        534
19.5.5 DataSet中數(shù)據(jù)表的約束        535
19.5.6 DataView類        535
19.6 強(qiáng)類型DataSet        537
19.6.1 創(chuàng)建強(qiáng)類型DataSet類        538
19.6.2 TableAdapter和強(qiáng)類型SQL請(qǐng)求        539
19.7 連接模式和非連接模式之間的橋接器        540
19.8 對(duì)象與關(guān)系數(shù)據(jù)之間的橋接器        541
19.8.1 結(jié)構(gòu)問(wèn)題        541
19.8.2 行為問(wèn)題        541
19.8.3 解決上述問(wèn)題的途徑        541
19.8.4 用于對(duì)象關(guān)系映射的.NET工具        542
19.9 SQL Server數(shù)據(jù)提供程序的專有功能        542
19.9.1 異步請(qǐng)求        542
19.9.2 批量復(fù)制        543
19.9.3 SqlClient連接上的統(tǒng)計(jì)數(shù)據(jù)        544
19.9.4 SQL Server 2005 Express版本        544
第20章 事務(wù)        545
20.1 事務(wù)簡(jiǎn)介        545
20.1.1 事務(wù)管理器、資源管理器和數(shù)據(jù)源        545
20.1.2 分布式事務(wù)以及2PC算法簡(jiǎn)介        546
20.1.3 在SQL Server連接上進(jìn)行的本地事務(wù)        547
20.1.4 分布式事務(wù)協(xié)調(diào)器        548
20.2 System.Transactions        549
20.2.1 LTM、持久RM和易變RM簡(jiǎn)介        549
20.2.2 System.Transactions 實(shí)現(xiàn)的隱式事務(wù)        550
20.2.3 在事務(wù)中被觸發(fā)的事件        551
20.2.4 System.Transactions揭秘        552
20.2.5 事務(wù)隔離級(jí)別簡(jiǎn)介        552
20.2.6 事務(wù)作用域        553
20.2.7 System.Transactions 實(shí)現(xiàn)的顯式事務(wù)        553
20.3 System.Transactions的高級(jí)用法        554
20.3.1 在多個(gè)線程中執(zhí)行一個(gè)事務(wù)        554
20.3.2 以異步方式完成事務(wù)        555
20.3.3 System.Transactions和CAS        555
20.4 用于實(shí)現(xiàn)自定義RM的機(jī)制        556
第21章 XML        560
21.1 簡(jiǎn)介        560
21.1.1 XML所解決的問(wèn)題        560
21.1.2 統(tǒng)一文檔世界和數(shù)據(jù)世界        560
21.1.3 XML文檔的結(jié)構(gòu)        561
21.2 XSD、XPath、XSLT和XQuery簡(jiǎn)介        562
21.2.1 用XSD schema類型化XML文檔及其數(shù)據(jù)        562
21.2.2 Xpath        563
21.2.3 XSLT        563
21.2.4 XQuery        564
21.3 遍歷和編輯XML文檔的方法        564
21.4 使用XmlReader類和XmlWriter類的Cursor方法        564
21.4.1 使用XmlReader類讀取數(shù)據(jù)        564
21.4.2 在讀取數(shù)據(jù)時(shí)對(duì)其進(jìn)行驗(yàn)證        566
21.4.3 使用XmlWriter類編輯數(shù)據(jù)        566
21.5 使用XmlDocument類的Tree/DOM方法        567
21.5.1 使用XmlDocument類裝載和遍歷XML文檔        567
21.5.2 使用XmlDocument類編輯和保存XML數(shù)據(jù)        568
21.5.3 使用XmlDocument類驗(yàn)證XML文檔        568
21.5.4 XmlDocument類的事件        568
21.6 使用XPath遍歷和編輯XML文檔        569
21.6.1 對(duì)內(nèi)存中的DOM樹應(yīng)用XPath表達(dá)式        569
21.6.2 用XPathNavigator對(duì)象遍歷XPathDocument對(duì)象        569
21.6.3 用XPathNodeIterator對(duì)象遍歷XPath的選擇結(jié)果集        570
21.6.4 用XPathNavigator對(duì)象編輯XmlDocument對(duì)象        570
21.7 使用XSLT樣式表轉(zhuǎn)換XML文檔        571
21.8 連接關(guān)系型數(shù)據(jù)與XML文檔的橋接器        571
21.8.1 從DataSet獲取XML文檔        571
21.8.2 用XML文檔填充DataSet        572
21.8.3 System.Xml.XmlDataDocument類        573
21.8.4 XML和SQL Server        574
21.9 連接對(duì)象與XML文檔的橋梁        575
21.9.1 System.Xml.XmlSerialization類        575
21.9.2 用于XML序列化的attribute        576
21.9.3 sgen.exe工具        576
21.9.4 xsd.exe工具        577
21.10 Visual Studio和XML        577
21.10.1 創(chuàng)建、查看以及編輯XML 文檔和XSD schema        577
21.10.2 用XSD schema驗(yàn)證XML文檔        577
21.10.3 編輯和調(diào)試XSLT程序        578
第22章 .NET Remoting        579
22.1 簡(jiǎn)介        579
22.1.1 什么是.NET Remoting        579
22.1.2 FAQ        579
22.2 按引用封送        580
22.3 按值封送和二進(jìn)制序列化        582
22.4 ObjectHandle類        584
22.5 對(duì)象的激活        585
22.5.1 分布式體系的組件        585
22.5.2 宿主概覽        585
22.5.3 信道概覽        585
22.5.4 同步方式、異步方式和單向方式調(diào)用        586
22.5.5 對(duì)象激活與對(duì)象創(chuàng)建        586
22.6 well-known對(duì)象的激活        586
22.7 客戶端激活的對(duì)象        589
22.7.1 使用new關(guān)鍵字激活對(duì)象        591
22.7.2 潛在的問(wèn)題        591
22.8 Factory設(shè)計(jì)模式和soapsuds.exe工具        591
22.8.1 Factory設(shè)計(jì)模式        591
22.8.2 soapsuds.exe工具        593
22.9 well-known和客戶端激活的對(duì)象的生命周期        594
22.10 配置.NET Remoting        596
22.10.1 配置宿主        597
22.10.2 配置客戶端        597
22.10.3 聯(lián)合使用接口和配置文件        598
22.11 .NET Remoting服務(wù)器的部署        601
22.11.1 Windows服務(wù)        601
22.11.2 IIS        601
22.12 安全的.NET Remoting信道        602
22.12.1 安全的TCP信道        602
22.12.2 安全的HTTP信道        602
22.13 代理和消息        603
22.13.1 把方法調(diào)用轉(zhuǎn)換成消息        603
22.13.2 IMessage接口的層次結(jié)構(gòu)        604
22.13.3 透明代理、真實(shí)代理和ObjRef類        604
22.13.4 通過(guò)ObjRef類發(fā)布對(duì)象        605
22.13.5 消息接收器        606
22.13.6 為何考慮自定義真實(shí)代理        607
22.13.7 開發(fā)自定義真實(shí)代理        608
22.13.8 在類的所有實(shí)例上使用自定義真實(shí)代理        609
22.13.9 讀寫方法調(diào)用的參數(shù)        611
22.14 信道        612
22.14.1 簡(jiǎn)介        612
22.14.2 發(fā)送方信道和代理        613
22.14.3 接收方信道和服務(wù)器對(duì)象        613
22.14.4 消息接收器、格式化程序和信道        613
22.14.5 信道接收器提供程序        614
22.14.6 示例:顯示網(wǎng)絡(luò)消息的大小        614
22.15 .NET上下文        621
22.15.1 簡(jiǎn)介        621
22.15.2 上下文綁定和上下文靈活對(duì)象        621
22.15.3 上下文attribute和上下文屬性        622
22.15.4 消息接收器區(qū)域        624
22.15.5 使用區(qū)域的示例        626
22.15.6 調(diào)用上下文        630
22.16 小結(jié)        631
22.16.1 激活對(duì)象的方式        631
22.16.2 截獲消息        632
第23章 ASP.NET 2.0        633
23.1 簡(jiǎn)介        633
23.1.1 歷史        633
23.1.2 ASP與ASP.NET        634
23.1.3 ASP.NET 1.x與ASP.NET 2.0        634
23.2 ASP.NET概覽        634
23.2.1 Web Form        634
23.2.2 運(yùn)行期的ASP.NET、IIS和Web應(yīng)用程序        634
23.2.3 在你自己的.NET應(yīng)用程序中承載ASP.NET        636
23.2.4 基于HTTP.SYS使用ASP.NET        637
23.3 ASP.NET應(yīng)用程序的源代碼        638
23.3.1 內(nèi)聯(lián)代碼        638
23.3.2 服務(wù)器端腳本的代碼段        639
23.3.3 代碼隱藏        640
23.4 編譯和部署模型        642
23.4.1 動(dòng)態(tài)編譯        642
23.4.2 就地預(yù)編譯        643
23.4.3 部署預(yù)編譯        643
23.5 Web Form和控件        644
23.5.1 服務(wù)器控件        644
23.5.2 客戶端和服務(wù)器端之間的交互        645
23.5.3 視圖狀態(tài)        646
23.5.4 回發(fā)事件和非回發(fā)事件        648
23.5.5 控件狀態(tài)        649
23.5.6 跨頁(yè)面?zhèn)鬟f        650
23.5.7 HTML服務(wù)器控件與Web服務(wù)器控件        652
23.6 頁(yè)面生命周期        653
23.7 ASP.NET應(yīng)用程序配置        656
23.7.1 Web.Config文件的組織        656
23.7.2 Web.Config文件的部分        657
23.7.3  < processModel >部分        657
23.7.4 更新配置        658
23.7.5 在運(yùn)行期應(yīng)用配置更新        658
23.8 HTTP管線        658
23.8.1 簡(jiǎn)介        658
23.8.2 HttpApplication類和Global.asax文件        659
23.8.3 HTTP上下文        660
23.8.4 HTTP模塊        660
23.8.5 HTTP處理程序        661
23.9 狀態(tài)和會(huì)話管理        663
23.9.1 會(huì)話管理        664
23.9.2 處理會(huì)話標(biāo)識(shí)符        666
23.9.3 會(huì)話存儲(chǔ)的標(biāo)準(zhǔn)實(shí)現(xiàn)        666
23.9.4 為存儲(chǔ)會(huì)話提供自定義實(shí)現(xiàn)        667
23.10 Provider設(shè)計(jì)模式        667
23.11 錯(cuò)誤處理        668
23.11.1  < system .Web  >配置元素和 < customErrors >配置元素        668
23.11.2 Application_Error事件        669
23.11.3 ErrorPage屬性        669
23.12 跟蹤、診斷以及事件管理        669
23.12.1 trace.axd HTTP處理程序        669
23.12.2 ASP.NET性能計(jì)數(shù)器        670
23.12.3 ASP.NET狀態(tài)監(jiān)視        670
23.13 輸入數(shù)據(jù)的校驗(yàn)        671
23.13.1 校驗(yàn)控件        671
23.13.2 實(shí)現(xiàn)自定義校驗(yàn)        673
23.13.3 校驗(yàn)組        673
23.13.4 ValidationSummary類        674
23.14 用戶控件        674
23.14.1 復(fù)合用戶控件        676
23.14.2 用戶控件事件        676
23.14.3 用戶控件狀態(tài)        677
23.14.4 用戶控件與Visual Studio的設(shè)計(jì)時(shí)支持        679
23.15 緩存        679
23.15.1 頁(yè)面緩存        679
23.15.2 緩存頁(yè)面的多個(gè)版本        680
23.15.3 頁(yè)面片段緩存        683
23.15.4 緩存后替換        684
23.15.5 數(shù)據(jù)緩存        684
23.15.6 緩存依賴        685
23.15.7 SQL Server緩存依賴        686
23.15.8 自定義緩存依賴        687
23.16 數(shù)據(jù)源        688
23.16.1 通過(guò)程序的方式綁定控件和數(shù)據(jù)源        688
23.16.2 聲明式綁定控件和數(shù)據(jù)源        689
23.16.3 平鋪數(shù)據(jù)源與層次數(shù)據(jù)源        690
23.16.4 ObjectDataSource類        690
23.16.5 利用數(shù)據(jù)源更新數(shù)據(jù)        691
23.17 查看并編輯數(shù)據(jù)         693
23.17.1 GridView控件        693
23.17.2 模板        696
23.17.3 DetailsView控件        698
23.17.4 FormView控件        700
23.17.5 顯示XML數(shù)據(jù)        701
23.18 母版頁(yè)        703
23.18.1 母版頁(yè)和內(nèi)容頁(yè)面        703
23.18.2 嵌套母版頁(yè)        704
23.18.3 配置母版頁(yè)        705
23.18.4 從內(nèi)容頁(yè)面訪問(wèn)母版頁(yè)        706
23.19 ASP.NET 2.0與本地化        707
23.20 站點(diǎn)導(dǎo)航        708
23.21 安全        710
23.21.1 通過(guò)IIS驗(yàn)證Windows用戶        710
23.21.2 ASP.NET驗(yàn)證        712
23.21.3 表單驗(yàn)證提供程序        712
23.21.4 管理用戶        713
23.21.5 管理角色        715
23.21.6 安全服務(wù)器控件        716
23.22 個(gè)性化與用戶配置        717
23.22.1 配置提供程序以及用戶數(shù)據(jù)的管理        717
23.22.2 匿名識(shí)別        718
23.22.3 個(gè)性化與會(huì)話        719
23.23 樣式、主題與皮膚        719
23.23.1 CSS樣式和控件        719
23.23.2 主題        720
23.23.3 皮膚        721
23.23.4 命名的皮膚        722
23.24 WebPart        722
23.24.1 創(chuàng)建包含WebPart的頁(yè)面        724
23.24.2 設(shè)計(jì)方式        726
23.24.3 WebPart目錄        727
23.24.4 編輯方式        728
23.24.5 連接WebPart        728
第24章 使用.NET進(jìn)行Web服務(wù)開發(fā)        731
24.1 簡(jiǎn)介        731
24.1.1 SOA:面向服務(wù)架構(gòu)        731
24.1.2 SOAP和WSDL        732
24.1.3 WS-I基本概要        732
24.1.4 消息交換模式        733
24.2 開發(fā)一個(gè)簡(jiǎn)單的Web服務(wù)        733
24.2.1 不使用Visual Studio開發(fā)一個(gè)簡(jiǎn)單的Web服務(wù)        733
24.2.2 使用Visual Studio開發(fā)一個(gè)簡(jiǎn)單的Web服務(wù)        735
24.3 測(cè)試與調(diào)試Web服務(wù)        735
24.3.1 測(cè)試Web服務(wù)        735
24.3.2 調(diào)試Web服務(wù)        736
24.4 創(chuàng)建Web服務(wù)的.NET客戶端        736
24.4.1 不使用Visual Studio來(lái)創(chuàng)建Web服務(wù)的.NET客戶端        736
24.4.2 使用Visual Studio創(chuàng)建Web 服務(wù)的.NET客戶端        738
24.5 異步調(diào)用與消息交換模式        739
24.6 通過(guò).NET Remoting客戶端使用Web服務(wù)        739
24.7 SOAP消息        740
24.7.1 簡(jiǎn)介        740
24.7.2 定義以及處理SOAP首部        741
24.7.3 對(duì)SOAP消息體編碼        742
24.7.4 SOAP錯(cuò)誤消息        743
24.7.5 SOAP與底層傳輸協(xié)議        743
24.8 Web服務(wù)契約與WSDL語(yǔ)言        743
24.8.1 WSDL能夠表達(dá)什么        743
24.8.2 剖析WSDL文檔        744
24.9 WSE與WS-*規(guī)范簡(jiǎn)介        746
24.9.1 WSE簡(jiǎn)介        746
24.9.2 WSE 3.0所支持的規(guī)范        747
24.9.3 安裝WSE        747
24.9.4 WSE是如何利用SOAP擴(kuò)展的        747
24.9.5 使用WSE診斷的第一個(gè)測(cè)試        748
24.10 WSE尚未支持的WS-*規(guī)范        748
24.10.1 WS-PolicyAttachment與WS-MetadataExchange        748
24.10.2 WS-ReliableMessage        748
24.10.3 UDDI and WS-Discovery        748
24.10.4 WS-Federation        749
24.10.5 WS-Coordination        749
24.10.6 WS-AtomicTransaction與WS-BusinessActivity        749
24.10.7 WS-Enumeration        750
24.10.8 WS-Eventing        750
24.10.9 WS-Management        750
24.11 WCF簡(jiǎn)介        750
附錄A C# 2.0的關(guān)鍵字        751
附錄B .NET 2.0的新增功能        754
附錄C 設(shè)計(jì)模式簡(jiǎn)介        762
附錄D 針對(duì).NET 2.0平臺(tái)的工具        764  

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)