-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
12/13 新書到! 10/8 新書到! 10/1 新書到! 9/24 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

C#與.NET 3.0高級程式設計(特別版)

( 簡體 字)
作者:[美]Andrew Troelsen 著類別:1. -> 程式設計 -> .NET -> C#
譯者:
出版社:人民郵電出版社C#與.NET 3.0高級程式設計(特別版) 3dWoo書號: 11638
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:3/1/2008
頁數:942
光碟數:0
站長推薦:
印刷:語系: ( 簡體 版 )
不接受訂購
ISBN:9787115168078
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書是C# 領域久負盛名的經典著作,深入全面地敘述了C# 編程語言和.NET 平臺核心,并以大量示例剖析相關概念。書中介紹了C# 的各種語言構造、.NET 2.0 的類、核心API、公共中間語言(CIL)、動態程序集和ASP.NET 擴展等內容;同時也介紹了.NET 3.0 中的新的編程API 包括WPF、WCF 和WF 的功能;另外,還介紹了最新的C# 3.0 編程語言和LINQ 編程技術。
<|br|>  本書由微軟C# MVP Andrew Troelsen 編寫,歷經多次修訂,適合各層次.NET 開發人員閱讀。
目錄:

第一部分 C#和.NET平臺簡介 第1章 .NET之道 2 1.1 了解.NET之前的世界 2 1.1.1 C/Win32 API程序員的生活 2 1.1.2 C++/MFC程序員的生活 2 1.1.3 Visual Basic 6.0程序員的生活 3 1.1.4 Java/J2EE程序員的生活 3 1.1.5 COM程序員的生活 3 1.1.6 Windows DNA程序員的生活 4 1.2 .NET解決方案 4 1.3 .NET平臺構造塊(CLR、CTS和CLS)簡介 5 1.4 C#的優點 6 1.5 其他支持.NET的編程語言 6 1.6 .NET程序集概覽 7 1.7 單文件程序集和多文件程序集 8 1.8 CIL的作用 9 1.8.1 CIL的好處 11 1.8.2 將CIL編譯成特定平臺的指令 11 1.9 .NET類型元數據的作用 11 1.10 程序集清單的作用 12 1.11 理解CTS 12 1.11.1 CTS類類型 12 1.11.2 CTS結構類型 13 1.11.3 CTS接口類型 13 1.11.4 CTS枚舉類型 14 1.11.5 CTS委托類型 14 1.11.6 CTS類型成員 14 1.11.7 內建的CTS數據類型 14 1.12 理解CLS 15 1.13 理解CLR 16 1.14 程序集/命名空間/類型的區別 18 1.14.1 以編程方式訪問命名空間 20 1.14.2 引用外部程序集 21 1.15 使用ildasm.exe 21 1.15.1 查看CIL代碼 22 1.15.2 查看類型元數據 22 1.15.3 查看程序集元數據 22 1.16 部署.NET運行庫 23 1.17 .NET的平臺無關性 23 1.18 小結 24 第2章 構建C#應用程序 25 2.1 安裝.NET Framework 2.0 SDK 25 2.2 C#命令行編譯器(csc.exe) 26 2.2.1 配置C#命令行編譯器 26 2.2.2 配置其他.NET命令行工具 27 2.3 使用csc.exe構建C#應用程序 27 2.3.1 引用外部程序集 28 2.3.2 使用csc.exe編譯多個源文件 29 2.3.3 引用多個外部程序集 30 2.4 使用csc.exe響應文件 30 2.5 命令行調試器(cordbg.exe) 31 2.6 使用TextPad構建.NET應用程序 32 2.6.1 啟用C#關鍵字著色 32 2.6.2 配置*.cs文件過濾器 33 2.6.3 與csc.exe關聯 33 2.6.4 將運行命令與菜單項相關聯 34 2.6.5 啟用C#代碼片段 35 2.7 使用SharpDevelop構建.NET應用程序 35 2.7.1 SharpDevelop 36 2.7.2 Project Scout和Classes Scout 36 2.7.3 Assembly Scout 37 2.7.4 Windows窗體設計器 38 2.8 使用Visual C# 2005 Express構建.NET應用程序 38 2.9 使用Visual Studio 2005構建.NET應用程序 39 2.9.1 Visual Studio 2005 39 2.9.2 Solution Explorer工具 40 2.9.3 Class View工具 41 2.9.4 Code Definition窗口 41 2.9.5 Object Browser工具 41 2.9.6 集成對代碼重構的支持 42 2.9.7 代碼擴展和圍繞技術 43 2.9.8 可視化Class Designer 43 2.9.9 對象測試平臺 45 2.9.10 集成的幫助系統 46 2.10 其他.NET開發工具 47 2.11 小結 47 第二部分 C#編程語言 第3章 C#語言基礎 50 3.1 剖析一個簡單的C#程序 50 3.1.1 Main()方法的其他形式 51 3.1.2 處理命令行參數 51 3.1.3 使用Visual Studio 2005指定命令行參數 52 3.2 有趣的題外話:System.Environment類 53 3.3 定義類并創建對象 53 3.3.1 構造函數的作用 54 3.3.2 是內存泄露嗎 55 3.3.3 定義“應用程序對象” 56 3.4 System.Console類 57 3.4.1 使用Console類進行基本的輸入和輸出 57 3.4.2 格式化控制臺輸出 58 3.4.3 .NET字符串格式化標志 58 3.5 設置成員的可見性 60 3.6 類成員變量的默認值 61 3.7 成員變量的初始化語法 62 3.8 定義常量數據 63 3.9 定義只讀字段 64 3.10 static關鍵字 66 3.10.1 靜態方法 66 3.10.2 靜態數據 67 3.10.3 靜態構造函數 68 3.10.4 靜態類 69 3.11 方法參數修飾符 70 3.11.1 默認的參數傳遞行為 71 3.11.2 out修飾符 71 3.11.3 ref修飾符 72 3.11.4 params修飾符 73 3.12 迭代結構 73 3.12.1 for循環 73 3.12.2 foreach循環 74 3.12.3 while和do/while循環結構 74 3.13 判斷結構與關系/相等運算符 75 3.13.1 if/else語句 75 3.13.2 switch語句 76 3.14 值類型和引用類型 77 3.14.1 值類型、引用類型和賦值運算符 78 3.14.2 包含引用類型的值類型 79 3.14.3 按值傳遞引用類型 81 3.14.4 按引用傳遞引用類型 82 3.14.5 值類型和引用類型:最后的細節 82 3.15 裝箱與拆箱操作 83 3.15.1 實用的裝箱和拆箱示例 84 3.15.2 拆箱自定義的值類型 85 3.16 使用.NET枚舉 86 3.17 最重要的類:System.Object 89 3.18 重寫System.Object的一些默認行為 92 3.18.1 重寫System.Object.ToString() 92 3.18.2 重寫System.Object.Equals() 92 3.18.3 重寫System.Object.GetHashCode() 93 3.18.4 測試重寫的成員 94 3.18.5 System.Object的靜態成員 95 3.19 系統數據類型(和C#簡化符號) 95 3.19.1 數值數據類型的實驗 97 3.19.2 System.Boolean的成員 97 3.19.3 System.Char的成員 98 3.19.4 從字符串數據中解析數值 98 3.19.5 System.DateTime和System.TimeSpan 99 3.20 System.String數據類型 100 3.20.1 基本的字符串操作 100 3.20.2 轉義字符 101 3.20.3 使用C#的逐字字符串 102 3.21 System.Text.StringBuilder的作用 102 3.22 .NET數組類型 103 3.22.1 數組作為參數(和返回值) 104 3.22.2 使用多維數組 104 3.22.3 System.Array基類 106 3.23 C#的可空類型 107 3.23.1 使用可空類型 107 3.23.2 ??運算符 108 3.24 定義自定義命名空間 108 3.24.1 類型的完全限定名 110 3.24.2 使用別名定義命名空間 111 3.24.3 創建嵌套的命名空間 112 3.24.4 Visual Studio 2005中的"默認命名空間" 113 3.25 小結 113 第4章 C# 2.0面向對象編程 114 4.1 C#的類類型 114 4.1.1 方法重載 116 4.1.2 使用C#的this進行自引用 116 4.1.3 定義類的公共接口 118 4.2 回顧OOP的支柱 118 4.2.1 封裝 119 4.2.2 繼承 119 4.2.3 多態 120 4.3 第一個支柱:C#的封裝支持 121 4.3.1 使用傳統的訪問方法和修改方法執行封裝 122 4.3.2 另一種形式的封裝:類屬性 122 4.3.3 C#屬性的內部表示 124 4.3.4 控制屬性get/set語句的可見性級別 126 4.3.5 只讀和只寫屬性 126 4.3.6 靜態屬性 126 4.4 第二個支柱:C#的繼承支持 127 4.4.1 使用base控制基類的創建 128 4.4.2 關于多基類 130 4.4.3 保護家族的秘密:protected關鍵字 130 4.4.4 防止繼承:密封類 130 4.5 為包含/委托編程 131 4.6 第三個支柱:C#的多態支持 134 4.6.1 virtual和override關鍵字 134 4.6.2 再談sealed關鍵字 135 4.6.3 抽象類 136 4.6.4 強制多態活動:抽象方法 137 4.6.5 成員隱藏 139 4.7 C#的類型轉換規則 140 4.7.1 確定Employee的類型 141 4.7.2 數值類型轉換 142 4.8 C#的分部類型 142 4.9 通過XML生成C#源代碼的文檔 144 4.9.1 XML代碼注釋格式化字符 146 4.9.2 轉換XML代碼注釋 146 4.10 小結 146 第5章 對象的生命周期 147 5.1 類、對象和引用 147 5.2 對象生命周期的基礎 148 5.3 應用程序根的作用 150 5.4 對象的代 151 5.5 System.GC類型 152 5.6 構建可終結對象 155 5.6.1 重寫System.Object.Finalize() 155 5.6.2 終結過程的細節 157 5.7 構建可處置對象 157 5.8 構建可終結類型和可處置類型 159 5.9 小結 161 第6章 結構化異常處理 162 6.1 錯誤、bug與異常 162 6.2 .NET異常處理的作用 163 6.2.1 .NET異常處理的四要素 163 6.2.2 System.Exception基類 164 6.3 最簡單的例子 165 6.3.1 引發普通的異常 166 6.3.2 捕獲異常 167 6.4 配置異常的狀態 168 6.4.1 TargetSite屬性 168 6.4.2 StackTrace屬性 169 6.4.3 HelpLink屬性 169 6.4.4 Data屬性 170 6.5 系統級異常(System.SystemException) 171 6.6 應用程序級異常(System.ApplicationException) 171 6.6.1 構建自定義異常,第一部分 172 6.6.2 構建自定義異常,第二部分 173 6.6.3 構建自定義異常,第三部分 173 6.7 處理多個異常 174 6.7.1 通用的catch語句 176 6.7.2 再次引發異常 176 6.7.3 內部異常 177 6.8 finally塊 178 6.9 誰在引發什么異常 178 6.10 未處理異常的后果 179 6.11 使用Visual Studio 2005調試未處理的異常 180 6.12 小結 180 第7章 接口與集合 181 7.1 使用C#定義接口 181 7.2 使用C#實現接口 182 7.3 接口與抽象基類的對比 183 7.4 在對象級別調用接口成員 184 7.4.1 獲取接口引用:as關鍵字 184 7.4.2 獲取接口引用:is關鍵字 185 7.5 接口作為參數 185 7.6 接口作為返回值 187 7.7 接口類型數組 187 7.8 顯式接口實現 188 7.9 構建接口層次結構 190 7.10 使用Visual Studio 2005實現接口 192 7.11 構建可枚舉類型(IEnumerable和IEnumerator) 193 7.12 構建可克隆的對象(ICloneable) 196 7.13 構建可比較的對象(IComparable) 199 7.13.1 指定多個排序的順序(IComparer) 201 7.13.2 自定義屬性、自定義排序類型 202 7.14 System.Collections命名空間的接口 203 7.14.1 ICollection接口的作用 203 7.14.2 IDictionary接口的作用 204 7.14.3 IDictionaryEnumerator接口的作用 204 7.14.4 IList接口的作用 204 7.15 System.Collections命名空間中的類 205 7.15.1 操作ArrayList類型 205 7.15.2 操作Queue類型 206 7.15.3 操作Stack類型 207 7.16 System.Collections.Specialized命名空間 208 7.17 小結 208 第8章 回調接口、委托與事件 209 8.1 回調接口 209 8.2 .NET委托類型 212 8.3 使用C#定義委托 213 8.4 System.MulticastDelegate與System.Delegate基類 215 8.5 最簡單的委托示例 216 8.6 使用委托改造Car類型 218 8.7 更復雜的委托示例 222 8.7.1 委托作為參數 223 8.7.2 分析委托代碼 225 8.8 委托協變 226 8.9 C#事件 228 8.9.1 揭開事件的神秘面紗 229 8.9.2 監聽傳入的事件 230 8.9.3 使用Visual Studio 2005簡化事件注冊 231 8.9.4 嚴謹規范的事件 231 8.10 C#匿名方法 233 8.11 C#方法組轉換 235 8.12 小結 236 第9章 高級C#類型構造技術 237 9.1 構建自定義索引器 237 9.2 類型索引器的內部表示方式 239 9.3 索引器:最后的細節 240 9.4 運算符重載 240 9.5 重載二元運算符 241 9.6 重載一元運算符 243 9.7 重載相等于運算符 243 9.8 重載比較運算符 244 9.9 重載運算符的內部表示形式 245 9.10 在不支持重載運算符的語言中使用重載運算符 246 9.11 運算符重載的最后思考 247 9.12 自定義類型轉換 247 9.12.1 回顧:數值轉換 247 9.12.2 回顧:相關的類類型間的轉換 247 9.13 創建自定義轉換例程 248 9.14 定義隱式轉換例程 250 9.15 自定義轉換例程的內部表示 251 9.16 C#的高級關鍵字 252 9.16.1 checked關鍵字 252 9.16.2 unchecked關鍵字 254 9.16.3 指針類型 254 9.16.4 sizeof關鍵字 259 9.17 C#預處理指令 260 9.17.1 指定代碼區域 260 9.17.2 條件代碼編譯 261 9.18 小結 262 第10章 泛型 263 10.1 再論裝箱、拆箱和System.Object之間的關系 263 10.2 裝箱/拆箱操作的問題 264 10.2.1 類型安全與強類型集合 264 10.2.2 裝箱與強類型集合 266 10.3 System.Collections.Generic命名空間 268 10.4 創建泛型方法 271 10.5 創建泛型結構(或類) 273 10.6 創建自定義泛型集合 275 10.6.1 使用where約束類型參數 276 10.6.2 運算符約束的不足 278 10.7 創建泛型基類 279 10.8 創建泛型接口 280 10.9 創建泛型委托 281 10.9.1 在.NET 1.1下模擬泛型委托 282 10.9.2 嵌套委托相關簡介 282 10.10 小結 283 第三部分 .NET程序集編程 第11章 .NET程序集入門 286 11.1 .NET程序集的作用 286 11.1.1 程序集促進代碼重用 286 11.1.2 程序集確定類型邊界 287 11.1.3 程序集是可版本化的單元 287 11.1.4 程序集是自描述的 287 11.1.5 程序集是可配置的 287 11.2 .NET程序集的格式 287 11.2.1 Win32文件首部 288 11.2.2 CLR文件首部 288 11.2.3 CIL代碼、類型元數據和程序集清單 289 11.2.4 可選的程序集資源 289 11.2.5 單文件程序集和多文件程序集 289 11.3 構建和使用單文件程序集 291 11.3.1 清單 293 11.3.2 CIL 294 11.3.3 類型元數據 295 11.3.4 構建C#客戶端應用程序 295 11.3.5 構建Visual Basic .NET客戶端應用程序 296 11.3.6 實現跨語言繼承 297 11.4 構建和使用多文件程序集 298 11.4.1 ufo.netmodule文件 299 11.4.2 airvehicles.dll文件 299 11.4.3 使用多文件程序集 299 11.5 私有程序集 300 11.5.1 私有程序集的標識 300 11.5.2 探測過程 301 11.5.3 配置私有程序集 301 11.5.4 配置文件和Visual Studio 2005 303 11.5.5 .NET Framework 2.0配置工具簡介 303 11.6 共享程序集 304 11.6.1 強名稱 305 11.6.2 為CarLibrary.dll賦予強名稱 306 11.6.3 使用Visual Studio 2005為程序集賦予強名稱 307 11.6.4 在GAC中安裝和移除共享程序集 307 11.6.5 延遲簽名的作用 308 11.7 使用共享程序集 308 11.8 配置共享程序集 310 11.8.1 凍結當前的共享程序集 310 11.8.2 構建共享程序集2.0.0.0版本 311 11.8.3 動態重定向到共享程序集的特定版本 312 11.8.4 再次研究.NET Framework 2.0 配置工具 313 11.9 研究GAC的內部結構 313 11.10 發行者策略程序集 315 11.11  codeBase 元素 316 11.12 System.Configuration命名空間 317 11.13 機器配置文件 318 11.14 程序集綁定總體流程圖 318 11.15 小結 319 第12章 類型反射、晚期綁定和基于特性的編程 320 12.1 類型元數據的必要性 320 12.1.1 查看(部分)EngineState枚舉的元數據 321 12.1.2 查看(部分)Car類型的元數據 321 12.1.3 研究TypeRef 322 12.1.4 記錄定義的程序集 323 12.1.5 記錄引用的程序集 323 12.1.6 記錄字符串字面量 323 12.2 反射 324 12.2.1 System.Type類 324 12.2.2 使用System.Object.GetType()得到Type引用 325 12.2.3 使用System.Type.GetType()得到Type引用 325 12.2.4 使用typeof()得到Type引用 326 12.3 構建自定義的元數據查看器 326 12.3.1 反射方法 326 12.3.2 反射字段和屬性 327 12.3.3 反射實現的接口 327 12.3.4 顯示其他信息 327 12.3.5 實現Main() 328 12.3.6 反射方法參數和返回值 329 12.4 動態加載程序集 330 12.5 反射共享程序集 332 12.6 晚期綁定 333 12.6.1 System.Activator類 333 12.6.2 調用沒有參數的方法 334 12.6.3 調用有參數的方法 335 12.7 特性編程 335 12.7.1 特性的使用者 336 12.7.2 在C#中使用預定義特性 336 12.7.3 為特性指定構造參數 338 12.7.4 Obsolete特性 338 12.7.5 C#特性簡化符號 338 12.8 構建自定義特性 339 12.8.1 應用自定義特性 339 12.8.2 限制特性使用 340 12.9 程序集級別(和模塊級別)特性 341 12.10 使用早期綁定反射特性 342 12.11 使用晚期綁定反射特性 342 12.12 反射、晚期綁定和自定義特性的使用背景 343 12.13 構建可擴展的應用程序 344 12.13.1 構建CommonSnappable-Types.dll 344 12.13.2 構建C#插件 345 12.13.3 構建Visual Basic.NET插件 345 12.13.4 構建可擴展的Windows窗體應用程序 346 12.14 小結 348 第13章 進程、應用程序域、上下文和CLR宿主 349 13.1 回顧傳統的Win32進程 349 13.2 .NET平臺下與進程進行交互 351 13.2.1 列舉運行中的進程 352 13.2.2 研究特定的進程 352 13.2.3 研究進程的線程集合 353 13.2.4 研究進程中的模塊集合 354 13.2.5 以編程方式啟動或結束進程 355 13.3 .NET應用程序域 356 13.3.1 列舉進程中的應用程序域 357 13.3.2 以編程方式創建新的應用程序域 358 13.3.3 以編程方式卸載應用程序域 360 13.4 對象上下文邊界 361 13.4.1 上下文靈活和上下文綁定類型 361 13.4.2 定義上下文綁定對象 362 13.4.3 研究對象的上下文 363 13.5 進程、應用程序域和上下文小結 364 13.6 承載CLR 364 13.6.1 CLR的并行執行 365 13.6.2 加載特定的CLR版本 366 13.6.3 其他的CLR宿主 366 13.7 小結 367 第14章 構建多線程應用程序 368 14.1 進程、應用程序域、上下文及線程之間的關系 368 14.2 .NET委托的簡短回顧 369 14.3 委托的異步天性 371 14.3.1 BeginInvoke()和EndInvoke()方法 371 14.3.2 System.IAsyncResult接口 372 14.4 異步調用方法 372 14.4.1 同步調用線程 373 14.4.2 AsyncCallback委托的作用 374 14.4.3 AsyncResult類的作用 375 14.4.4 傳遞和接收自定義狀態數據 375 14.5 System.Threading命名空間 376 14.6 System.Threading.Thread類 377 14.6.1 獲得當前線程的統計信息 377 14.6.2 Name屬性 378 14.6.3 Priority屬性 378 14.7 以編程方式創建次線程 379 14.7.1 使用ThreadStart委托 379 14.7.2 使用Parameterized-ThreadStart委托 381 14.7.3 前臺線程和后臺線程 382 14.8 并發問題 383 14.8.1 使用C#的lock關鍵字進行同步 385 14.8.2 使用System.Threading.Monitor類型進行同步 386 14.8.3 使用System.Threading.Interlocked類型進行同步 387 14.8.4 使用[Synchronization]進行同步 388 14.9 使用Timer Callback編程 388 14.10 CLR線程池 390 14.11 小結 391 第15章 CIL和動態程序集的作用 392 15.1 CIL編程的本質 392 15.2 研究CIL指令、特性和操作碼 393 15.2.1 CIL指令的作用 393 15.2.2 CIL特性的作用 393 15.2.3 CIL操作碼的作用 393 15.2.4 區別CIL操作碼和CIL助記符 394 15.3 入棧和出棧:CIL基于棧的本質 394 15.4 正反向工程 395 15.4.1 CIL代碼標簽的作用 397 15.4.2 與CIL交互:修改*.il文件 398 15.4.3 使用ilasm.exe編譯CIL代碼 399 15.4.4 使用SharpDevelop編譯CIL代碼 400 15.4.5 使用ILIDE#編譯CIL代碼 400 15.4.6 peverify.exe的作用 401 15.5 CIL指令和特性 401 15.5.1 在CIL中指定外部引用程序集 401 15.5.2 在CIL中定義當前程序集 401 15.5.3 在CIL中定義命名空間 402 15.5.4 在CIL中定義類類型 402 15.5.5 在CIL中定義和實現接口 403 15.5.6 在CIL中定義結構 404 15.5.7 在CIL中定義枚舉 404 15.5.8 編譯CILTypes.il文件 404 15.6 .NET基類庫、C#和CIL數據類型的映射 405 15.7 在CIL中定義成員 405 15.7.1 在CIL中定義數據字段 405 15.7.2 在CIL中定義類型的構造函數 406 15.7.3 在CIL中定義屬性 406 15.7.4 定義成員參數 407 15.8 剖析CIL操作碼 407 15.8.1 了解.maxstack指令 409 15.8.2 在CIL中聲明局部變量 409 15.8.3 在CIL中映射參數到局部變量 410 15.8.4 隱式this引用 410 15.8.5 在CIL中使用循環結構 411 15.9 使用CIL構建.NET程序集 411 15.9.1 構建CILCars.dll 412 15.9.2 構建CILCarClient.exe 414 15.10 動態程序集 415 15.10.1 System.Reflection.Emit命名空間 416 15.10.2 System.Reflection.Emit.ILGenerator的作用 416 15.10.3 產生動態的程序集 417 15.10.4 產生程序集和模塊集 419 15.10.5 ModuleBuilder類型的作用 420 15.10.6 產生HelloClass類型和字符串成員變量 420 15.10.7 產生構造函數 421 15.10.8 產生HelloWorld()方法 422 15.10.9 使用動態產生的程序集 422 15.11 System.CodeDom簡單說明 423 15.12 小結 423 第四部分 使用.NET庫編程 第16章 System.IO命名空間 426 16.1 研究System.IO命名空間 426 16.2 Directory(Info)和File(Info)類型 427 16.3 使用DirectoryInfo類型 428 16.3.1 FileAttributes枚舉 429 16.3.2 使用DirectoryInfo類型列出文件 429 16.3.3 使用DirectoryInfo類型創建子目錄 430 16.4 使用Directory類型 431 16.5 使用DriveInfo類類型 432 16.6 使用FileInfo類 433 16.6.1 FileInfo.Create()方法 433 16.6.2 FileInfo.Open()方法 434 16.6.3 FileInfo.OpenRead()和FileInfo.OpenWrite()方法 435 16.6.4 FileInfo.OpenText()方法 435 16.6.5 FileInfo.CreateText()和FileInfo.AppendText()方法 435 16.7 使用File類型 436 16.8 Stream抽象類 437 16.9 使用StreamWriter和StreamReader類型 440 16.9.1 寫文本文件 440 16.9.2 從文本文件讀 441 16.9.3 直接創建StreamWriter/StreamReader類型 442 16.10 使用StringWriter和StringReader 442 16.11 使用BinaryWriter和BinaryReader 443 16.12 以編程方式“觀察”文件 445 16.13 實現異步文件I/O操作 447 16.14 小結 448 第17章 對象序列化 449 17.1 對象序列化 449 17.2 為序列化配置對象 451 17.3 選擇序列化格式化程序 452 17.3.1 IFormatter和IRemoting- Formatting接口 452 17.3.2 在格式化程序中的類型保真 453 17.4 使用BinaryFormatter序列化對象 453 17.5 使用SoapFormatter序列化對象 455 17.6 使用XmlSerializer序列化對象 456 17.7 持久化對象集合 458 17.8 自定義序列化過程 459 17.8.1 深入了解對象序列化 460 17.8.2 使用ISerializable自定義序列化 461 17.8.3 使用特性自定義序列化 462 17.9 可序列化對象的版本處理 463 17.10 小結 465 第18章 .NET遠程處理層 466 18.1 定義.NET遠程處理 466 18.2 .NET遠程處理命名空間 466 18.3 .NET遠程處理框架 467 18.3.1 代理和消息 468 18.3.2 信道 469 18.3.3 .NET格式化程序的作用 469 18.3.4 綜合討論 469 18.3.5 擴展默認管道的簡單介紹 470 18.4 .NET遠程處理數據交換的術語 470 18.4.1 對象封送方式:MBR還是MBV 470 18.4.2 選擇MBR的激活類型:WKO還是CAO 472 18.4.3 WKO類型的狀態配置:單例還是單一調用 473 18.4.4 MBR對象類型特性小結 473 18.5 .NET遠程處理項目的基本部署 473 18.6 構建第一個分布式應用程序 474 18.6.1 構建普通程序集 474 18.6.2 構建服務器端程序集 475 18.6.3 建立SimpleRemoteObject-Client.exe程序集 476 18.6.4 測試遠程處理應用程序 477 18.7 ChannelServices類型 477 18.8 RemotingConfiguration類型 478 18.9 WKO類型激活模式 479 18.10 把服務器部署成遠程機器 480 18.11 利用TCP通道 480 18.12 簡單談談IpcChannel 481 18.13 遠程處理配置文件 481 18.13.1 構建服務器端*.config文件 482 18.13.2 構建客戶端*.config文件 483 18.14 使用MBV對象 484 18.14.1 構建普通程序集 484 18.14.2 構建服務器端程序集 485 18.14.3 構建客戶端程序集 486 18.15 客戶端激活的對象 487 18.16 CAO/WKO-Singleton對象基于租約的生存期 489 18.16.1 默認的租約行為 489 18.16.2 改變默認租約特性 491 18.16.3 服務器端租約調整 492 18.16.4 客戶端租約調整 492 18.17 服務器端(和客戶端)租約主辦方機制 493 18.18 遠程對象的其他宿主 494 18.18.1 使用Windows服務承載遠程對象 494 18.18.2 使用IIS承載遠程對象 497 18.19 異步遠程處理 498 18.20 小結 500 第19章 使用System.Windows.Forms 構建更好的窗體 501 19.1 System.Windows.Forms命名空間概述 501 19.2 使用Windows窗體類型 502 19.2.1 手動創建主窗口 502 19.2.2 重視分離關注點 503 19.3 Application類的作用 504 19.3.1 Application類的使用 505 19.3.2 System.EventHandler委托 506 19.4 剖析Form 506 19.5 Control類的功能 507 19.5.1 Control類的使用 509 19.5.2 響應MouseMove事件 509 19.5.3 檢測被單擊的鼠標鍵 510 19.5.4 響應鍵盤事件 511 19.6 Form類的功能 512 19.7 使用Visual Studio 2005構建窗口應用程序 514 19.7.1 啟用過時的控件 515 19.7.2 研究Visual Studio 2005 Windows窗體項目 516 19.7.3 在設計時處理事件 517 19.7.4 Program類 517 19.7.5 被自動引用的程序集 518 19.8 MenuStrips和ContextMenuStrips的使用 518 19.8.1 向MenuStrip添加TextBox 520 19.8.2 創建上下文菜單 521 19.8.3 選擇菜單項 523 19.9 使用StatusStrip 524 19.9.1 設計菜單系統 524 19.9.2 設計StatusStrip 525 19.9.3 用Timer類型工作 527 19.9.4 切換顯示 527 19.9.5 顯示菜單選擇提示符 528 19.9.6 建立“Ready”狀態 528 19.10 使用ToolStrip工作 529 19.11 構建MDI運用程序 534 19.11.1 構建父窗體 534 19.11.2 構建子窗體 535 19.11.3 復制子窗體 535 19.12 小結 536 第20章 使用GDI+繪制圖形 537 20.1 GDI+命名空間概述 537 20.2 System.Drawing命名空間概述 538 20.3 System.Drawing實用類型 538 20.3.1 Point(F)類型 539 20.3.2 Rectangle(F)類型 539 20.3.3 Region類 540 20.4 Graphics類 541 20.5 Paint會話 542 20.5.1 使窗體的客戶區域失效 543 20.5.2 在Paint事件處理程序外獲取Graphics對象 544 20.5.3 關于Graphics對象的釋放 545 20.6 GDI+坐標系統 546 20.6.1 默認度量單位 546 20.6.2 指定另一種度量單位 547 20.6.3 指定另一個原點 548 20.7 定義顏色值 549 20.8 操作字體 550 20.8.1 使用字體族 551 20.8.2 使用字體名和字體大小 552 20.8.3 枚舉安裝的字體 553 20.8.4 FontDialog類 555 20.9 System.Drawing.Drawing2D命名空間概述 556 20.10 使用Pen 556 20.11 使用Brush 558 20.11.1 使用HatchBrush 559 20.11.2 使用TextureBrush 560 20.11.3 使用LinearGradient-Brushe 561 20.12 呈現圖像 562 20.13 PictureBox控件的拖動和單擊測試 563 20.13.1 呈現圖像的單擊測試 565 20.13.2 非矩形圖像的單擊測試 567 20.14 .NET資源格式 569 20.14.1 System.Resources命名空間 570 20.14.2 以編程方式創建*.resx文件 570 20.14.3 構建*.resources文件 571 20.14.4 把*.resources文件綁定到.NET程序集 571 20.14.5 使用ResourceWriter 572 20.14.6 使用Visual Studio 2005生成資源 572 20.14.7 通過編程讀取資源 574 20.15 小結 574 第21章 Windows窗體控件編程 575 21.1 Windows窗體控件 575 21.2 手動給窗體添加控件 575 21.3 使用Visual Studio 2005給窗體添加控件 578 21.4 基本控件的使用 578 21.4.1 Label的作用 579 21.4.2 TextBox的作用 580 21.4.3 MaskedTextBox的作用 581 21.4.4 Button的作用 583 21.4.5 CheckBox、RadioButton和GroupBox的作用 585 21.4.6 CheckedListBox的作用 587 21.4.7 ListBox的作用 588 21.4.8 ComboBox的作用 589 21.5 配置選項卡的次序 589 21.6 設置窗體的默認輸入按鈕 590 21.7 更多奇特的控件 590 21.7.1 MonthCalendar控件的作用 591 21.7.2 ToolTip控件的作用 592 21.7.3 TabControl控件的作用 593 21.7.4 TrackBar的作用 593 21.7.5 Panel的作用 595 21.7.6 UpDown控件的作用 596 21.7.7 ErrorProvider的作用 598 21.7.8 TreeView的作用 599 21.7.9 WebBrowser的作用 603 21.8 創建自定義Windows窗體控件 604 21.8.1 創建圖像 605 21.8.2 構建設計時UI 605 21.8.3 實現核心的CarControl 605 21.8.4 定義自定義事件 607 21.8.5 定義自定義屬性 607 21.8.6 控制動畫 608 21.8.7 顯示昵稱 608 21.9 測試CarControl類型 609 21.10 創建自定義CarControl窗體宿主 609 21.11 System.ComponentModel命名空間的作用 610 21.11.1 增強CarControl的設計時外觀 611 21.11.2 定義默認的屬性和默認的事件 611 21.11.3 指定自定義的工具箱位圖 612 21.12 創建自定義對話框 613 21.12.1 DialogResult屬性 614 21.12.2 窗體繼承 615 21.13 動態定位Windows窗體控件 617 21.13.1 Anchor屬性 617 21.13.2 Dock屬性 617 21.13.3 表和流布局 618 21.14 小結 619 第22章 使用ADO.NET訪問數據庫 620 22.1 ADO.NET高層次定義 620 22.2 ADO.NET的數據提供器 621 22.2.1 微軟提供的數據提供器 622 22.2.2 選擇第三方的數據提供器 623 22.3 其他的ADO.NET命名空間 623 22.4 System.Data類型 624 22.4.1 IDbConnection接口的作用 624 22.4.2 IDbTransaction接口的作用 625 22.4.3 IDbCommand接口的作用 625 22.4.4 IDbDataParameter/IData-Parameter接口的作用 625 22.4.5 IDbDataAdapter/IData-Adapter接口的作用 626 22.4.6 IDataReader/IdataRecord接口的作用 626 22.5 使用接口抽象數據提供器 627 22.6 使用應用程序配置文件增加靈活性 628 22.7 .NET 2.0提供器工廠模型 629 22.7.1 為數據提供器工廠注冊 630 22.7.2 完整的數據提供器的例子 631 22.8  connectionStrings 元素 632 22.9 安裝Cars數據庫 633 22.10 ADO.NET的連接式訪問 635 22.10.1 使用連接對象 635 22.10.2 使用.NET 2.0的ConnectionStringBuilder 637 22.10.3 使用命令對象 638 22.11 使用數據讀取器 639 22.12 使用命令對象修改表 641 22.12.1 插入新的記錄 643 22.12.2 刪除現有記錄 643 22.12.3 更新現有記錄 643 22.13 使用參數化的命令對象 644 22.14 使用DbCommand執行存儲過程 646 22.15 .NET 2.0的異步數據訪問 647 22.16 ADO.NET斷開式訪問方式 648 22.17 DataSet的作用 649 22.18 使用DataColumn 651 22.18.1 構建DataColumn 652 22.18.2 啟用列自增 652 22.18.3 把DataColumn加入DataTable 652 22.19 使用DataRow 653 22.20 使用DataTable 654 22.21 持久化DataSet(和DataTable)成為XML 657 22.22 把DataTable呈現到用戶界面 658 22.22.1 以編程方式刪除行 660 22.22.2 應用過濾和排序 660 22.22.3 更新行 662 22.23 使用DataView類型 663 22.24 使用數據適配器 664 22.24.1 使用數據適配器填充DataSet 665 22.24.2 映射數據庫名稱為友好名稱 665 22.25 使用數據適配器對象更新數據庫 666 22.25.1 設置InsertCommand屬性 667 22.25.2 設置UpdateCommand屬性 667 22.25.3 設置DeleteCommand屬性 668 22.26 使用CommandBuilder類型自動生成SQL命令 668 22.27 多表DataSet和DataRelation對象 670 22.28 最后看一下(數據)向導 673 22.28.1 強類型化的DataSet 675 22.28.2 自動生成的數據組件 675 22.29 小結 676 第五部分 Web應用程序和XML Web服務 第23章 ASP.NET 2.0網頁和Web控件 678 23.1 HTTP的作用 678 23.2 Web應用程序和Web服務 679 23.2.1 使用IIS虛擬目錄工作 680 23.2.2 ASP.NET 2.0開發服務器 680 23.3 HTML的作用 681 23.3.1 HTML文檔結構 681 23.3.2 HTML表單開發 682 23.3.3 構建基于HTML的用戶界面 682 23.4 客戶端腳本的作用 684 23.4.1 客戶端腳本示例 685 23.4.2 驗證default.htm表單數據 685 23.5 提交表單數據(GET和POST) 685 23.6 構建傳統的ASP頁面 686 23.7 傳統ASP相關問題 688 23.7.1 ASP.NET 1.x的主要優點 688 23.7.2 ASP.NET 2.0的主要改進 688 23.8 ASP.NET 2.0命名空間 688 23.9 ASP.NET網頁代碼模型 689 23.9.1 使用單文件頁面模型 690 23.9.2 使用代碼隱藏頁面模型 694 23.10 ASP.NET站點目錄結構細節 697 23.10.1 Bin文件夾的作用 697 23.10.2 App_Code文件夾的作用 698 23.11 ASP.NET 2.0頁面編譯周期 699 23.11.1 單文件頁面的編譯周期 699 23.11.2 多文件頁面的編譯周期 700 23.12 頁面類型的繼承鏈 701 23.13 與傳入的HTTP請求交互 702 23.13.1 獲得瀏覽器統計數據 703 23.13.2 訪問傳入的表單數據 703 23.13.3 IsPostBack屬性 704 23.14 與輸出HTTP響應交互 704 23.14.1 提交HTML內容 705 23.14.2 重定向用戶 705 23.15 ASP.NET網頁的生命周期 706 23.15.1 AutoEventWireUp特性的作用 707 23.15.2 Error事件 708 23.16 Web控件的本質 709 23.16.1 取得服務器端事件處理權 710 23.16.2 AutoPostBack屬性 710 23.17 System.Web.UI.Control類型 711 23.17.1 枚舉所包含的控件 711 23.17.2 動態添加(和刪除)控件 712 23.18 System.Web.UI.WebControls.WebControl類型的關鍵成員 713 23.19 ASP.NET Web控件的類別 714 23.20 構建簡單的ASP.NET 2.0站點 714 23.20.1 使用母版頁工作 715 23.20.2 定義Defrult.aspx內容頁面 717 23.20.3 設計Inventory內容頁面 718 23.20.4 設計Build a Car內容頁面 722 23.21 驗證控件的作用 724 23.21.1 RequiredFieldValidator 725 23.21.2 RegularExpression-Validator 725 23.21.3 RangeValidator 726 23.21.4 CompareValidator 726 23.21.5 創建ValidationSummary 727 23.22 小結 727 第24章 ASP.NET 2.0 Web應用程序 728 24.1 狀態問題 728 24.2 ASP.NET狀態管理技術 730 24.3 ASP.NET視圖狀態的作用 730 24.3.1 演示視圖狀態 730 24.3.2 添加自定義視圖狀態數據 732 24.3.3 控件狀態簡述 732 24.4 Global.asax文件的作用 733 24.4.1 全局最后異常事件處理程序 734 24.4.2 HttpApplication基類 735 24.5 應用程序狀態與會話狀態差別 735 24.5.1 維護應用程序級的狀態數據 736 24.5.2 修改應用程序數據 737 24.5.3 處理Web應用程序的關閉 738 24.6 使用應用程序緩存 738 24.6.1 使用數據緩存 739 24.6.2 修改*.aspx文件 741 24.7 維護會話數據 743 24.8 cookie 745 24.8.1 創建cookie 746 24.8.2 讀取傳入的cookie數據 747 24.9 使用Web.config配置ASP.NET應用程序 747 24.9.1 通過 trace 啟用跟蹤 748 24.9.2 通過 customErrors 自定義錯誤輸出 749 24.9.3 通過 sessionState 存儲狀態 750 24.9.4 ASP.NET 2.0站點管理工具 751 24.10 配置繼承 752 24.11 小結 753 第25章 XML Web服務 754 25.1 XML Web服務的作用 754 25.1.1 XML Web服務的優點 754 25.1.2 定義XML Web服務客戶端 755 25.1.3 XML Web服務的基礎 755 25.1.4 概述XML Web服務發現 755 25.1.5 概述XML Web服務描述 756 25.1.6 概述傳輸協議 756 25.2 .NET XML Web服務命名空間 756 25.3 手動構建XML Web服務 757 25.3.1 使用WebDev.WebServer.exe測試XML Web服務 758 25.3.2 使用IIS測試XML Web服務 759 25.3.3 查看WSDL合約 759 25.4 自動生成測試頁面 759 25.5 使用Visual Studio 2005構建XML Web服務 760 25.6 WebService基類的作用 762 25.7 [WebService]特性 763 25.7.1 Namespace和Description屬性的作用 763 25.7.2 Name屬性 763 25.8 [WebServiceBinding]特性 764 25.8.1 忽略BP 1.1一致性驗證 765 25.8.2 禁用BP 1.1一致性驗證 765 25.9 [WebMethod]特性 765 25.9.1 通過Description屬性為Web方法歸檔 765 25.9.2 通過MessageName屬性避免WSDL名稱沖突 766 25.9.3 用EnableSession屬性構建有狀態的Web服務 766 25.10 探索WSDL 768 25.10.1 定義WSDL文檔 768 25.10.2  types 元素 769 25.10.3  message 元素 770 25.10.4  portType 元素 770 25.10.5  binding 元素 771 25.10.6  service 元素 771 25.11 再談XML Web服務報文協議 772 25.11.1 HTTP GET和HTTP POST綁定 772 25.11.2 SOAP綁定 773 25.12 wsdl.exe命令行的效用 774 25.12.1 將WSDL轉換成服務器端XML Web服務框架 775 25.12.2 將WSDL轉換為客戶端代理類 775 25.13 查看代理服務器代碼 776 25.13.1 默認的構造函數 776 25.13.2 同步調用支持 777 25.13.3 異步調用支持 777 25.13.4 構建客戶端應用程序 778 25.14 使用Visual Studio 2005生成代理類 778 25.15 從Web方法公開自定義類型 779 25.15.1 公開數組 779 25.15.2 公開結構 780 25.15.3 公開ADO.NET數據集 781 25.15.4 Windows窗體客戶端 781 25.15.5 客戶端類型代理 783 25.16 發現服務協議(UDDI) 784 25.17 小結 785 第六部分 .NET 3.0擴展編程 第26章 建立.NET 3.0編程環境 788 26.1 .NET 3.0技術介紹 788 26.2 C# 3.0和LINQ技術介紹 789 26.3 歡迎使用.NET 3.0 789 26.4 安裝.NET Framework 3.0運行庫組件 790 26.5 安裝Windows軟件開發包 791 26.5.1 選擇安裝項 791 26.5.2 研究SDK的內容 792 26.6 安裝Visual Studio “Orcas”開發工具 793 26.6.1 安裝WPF和WCF項目支持 793 26.6.2 安裝Visual Studio 2005為WF提供的擴展 794 26.7 安裝C# 3.0和LINQ社區預覽版 795 26.8 小結 796 第27章 WPF介紹 797 27.1 WPF背后的動機 797 27.1.1 通過XAML將關注點分離 798 27.1.2 提供優化的呈現模型 799 27.2 WPF程序集詳解 799 27.2.1 Application類的作用 800 27.2.2 Window類的作用 801 27.3 創建(不使用XAML的)WPF應用程序 803 27.3.1 擴展Window類 805 27.3.2 創建簡單的用戶界面 805 27.4 XAML介紹 806 27.4.1 用XAML定義MainWindow 807 27.4.2 用XAML定義應用對象 808 27.4.3 通過msbuild.exe處理XAML文件 809 27.5 將標記轉換為.NET程序集 810 27.5.1 XAML到C#代碼的映射 810 27.5.2 BAML的作用 811 27.5.3 XAML到程序集的過程摘要 813 27.6 使用代碼隱藏文件實現的關注點的分離 813 27.7 在XamlPad中練習使用XAML 815 27.8 使用Visual Studio “Orcas”創建WPF應用程序 816 27.9 使用微軟表達式交互設計器生成XAML 817 27.10 使用面板控制內容布局 818 27.10.1 在Canvas面板中放置內容 819 27.10.2 在WrapPanel面板中放置內容 820 27.10.3 在StackPanel面板內放置內容 821 27.10.4 在Grid面板中放置內容 822 27.10.5 在DockPanel面板中放置內容 823 27.10.6 使用嵌套的面板創建窗體的框架 823 27.11 WPF控件 825 27.11.1 配置WPF控件 825 27.11.2 使用WPF控件屬性 826 27.11.3 處理WPF控件事件 828 27.11.4 應用控件樣式 829 27.12 WPF圖形顯示服務簡介 831 27.12.1 WPF圖形服務詳解 832 27.12.2 使用基本的形狀 833 27.12.3 WPF動畫服務介紹 834 27.12.4 使用微軟Expression圖形設計器生成XAML 836 27.13 XAML瀏覽器應用程序簡介 836 27.14 小結 838 第28章 WCF介紹 839 28.1 WCF背后的動機 839 28.2 探究WCF核心程序集 840 28.3 WCF基礎 841 28.3.1 WCF契約 841 28.3.2 WCF綁定 841 28.3.3 WCF地址 843 28.4 構建完整的WCF應用程序 843 28.4.1 組成WCF應用程序的相關程序集 843 28.4.2 契約的定義與實現 843 28.5 承載WCF服務 846 28.5.1 指明ABC 848 28.5.2 ServiceHost類型的功能 848 28.6  system.ServiceModel 元素的細節 849 28.7 與WCF服務進行通信 852 28.7.1 使用svcutil.exe生成代理代碼 852 28.7.2 使用Visual Studio 2005生成代理代碼 853 28.8 WCF的數據類型表示 854 28.8.1 更新ICarOrder服務契約 854 28.8.2 對CarOrderServiceClient程序集重新編碼 856 28.8.3 使用XmlSerializer進行數據編碼 857 28.8.4 使用二進制格式傳輸數據 857 28.9 使用服務配置編輯器生成WCF配置文件 858 28.10 小結 859 第29章 WF介紹 860 29.1 WF背后的動機 860 29.2 WF的積木塊 861 29.2.1 WF中的集成服務 862 29.2.2 WF活動初覽 862 29.2.3 順序工作流和狀態機工作流的作用 863 29.2.4 深入探討工作流 865 29.3 WF程序集和核心命名空間 865 29.4 建造一個啟用工作流的簡單應用 866 29.4.1 研究初始工作流的代碼 866 29.4.2 添加Code活動 867 29.4.3 添加While活動 868 29.4.4 研究WF引擎承載代碼 870 29.4.5 添加定制的起初參數 871 29.5 在工作流中調用Web服務 873 29.6 構建可重用的WF代碼庫 877 29.6.1 編寫簡單的工作流 878 29.6.2 創建啟用工作流的Windows Forms應用程序 878 29.7 關于自定義活動的簡要說明 879 29.8 小結 880 第30章 C# 3.0的語言功能 881 30.1 使用C# 3.0命令行編譯器 881 30.2 理解隱式類型化的局部變量 882 30.2.1 隱式類型化變量的限制 883 30.2.2 隱式類型化的局部數組 884 30.2.3 隱式數據類型化的最后注意事項 884 30.3 理解擴展方法 885 30.3.1 定義擴展方法 885 30.3.2 在實例層次上調用擴展方法 886 30.3.3 靜態調用擴展方法 887 30.3.4 導入定義了擴展方法的類型 888 30.3.5 構建和使用擴展庫 888 30.4 理解對象初始化器 890 30.4.1 使用初始化語法調用自定義構造函數 891 30.4.2 初始化內部類型 892 30.4.3 理解集合的初始化 893 30.5 理解匿名類型 894 30.5.1 匿名類型的內部表示方式 895 30.5.2 方法ToString()和方法GetHashCode()的實現 896 30.5.3 匿名類型的相等語義 897 30.5.4 包含匿名類型的匿名類型 898 30.6 理解Lambda表達式的角色 899 30.6.1 Lambda表達式是更好的匿名方法 900 30.6.2 剖析Lambda表達式 902 30.6.3 Lambda表達式的兩種風格 902 30.6.4 使用Lambda表達式重新編寫CarDelegate示例 903 30.6.5 含有多個(或零個)參數的Lambda表達式 905 30.7 小結 906 第31章 LINQ介紹 907 31.1 定義LINQ的作用 907 31.2 核心LINQ程序集 908 31.3 LINQ查詢表達式初覽 909 31.3.1 重訪隱型局部變量 911 31.3.2 重訪擴展方法 912 31.4 用LINQ查詢泛型集合 913 31.4.1 定義LINQ查詢 914 31.4.2 重訪匿名類型 914 31.5 使用LINQ查詢非泛型集合 915 31.6 查詢運算符的內部表示 916 31.6.1 用查詢運算符建立查詢表達式(復習) 917 31.6.2 使用Sequence類型和Lambda表達式來建立查詢表達式 917 31.6.3 使用Sequence類型和匿名方法來建立查詢表達式 918 31.6.4 用Sequence類型和原始代理建立查詢表達式 919 31.7 研究LINQ查詢運算符 920 31.8 構建LINQ查詢表達式 920 31.8.1 基本的選擇語法 921 31.8.2 獲取數據子集 922 31.8.3 逆轉結果集的順序 923 31.8.4 對表達式進行排序 923 31.8.5 轉換查詢結果以及轉換延緩執行的作用 924 31.9 使用LINQ到SQL來查詢關系數據庫 925 31.9.1 實體類的作用 926 31.9.2 DataContext類型的作用 926 31.9.3 一個LINQ到SQL的簡單例子 926 31.9.4 建立強類型的DataContext 927 31.9.5 詳細介紹[Table]特性和[Column]特性 928 31.10 使用sqlmetal.exe生成實體類 929 31.10.1 研究生成的實體類 930 31.10.2 使用實體類來定義關系 931 31.10.3 強類型的DataContext 932 31.10.4 針對生成的類型來編程 933 31.11 使用Visual Studio 2005建立實體類 934 31.11.1 插入新項 935 31.11.2 更新現有項 936 31.11.3 刪除現有項 936 31.12 使用LINQ到XML操作XML文檔 936 31.12.1 System.Xml.XLinq命名空間 937 31.12.2 以編程方式創建XML文檔 937 31.12.3 裝載并分析XML內容 939 31.13 在內存文檔中導航 940 31.13.1 使用LINQ 到XML來選擇元素 940 31.13.2 在XML文檔中修改數據 941 31.14 小結 942
序: