C#與.NET 3.0高級程序設計

所属分类:編程語言與程序設計  
出版时间:2008-3   出版时间:人民郵電出版社   作者:特羅爾森   页数:972   译者:王少葵  

内容概要

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

作者简介

  特羅爾森(Andrew Troelsen),世界級C#專家,微軟Visual C#MVP。他是著名的微軟技術咨詢企業Intcrtech的合伙人和副總裁,該公司的客戶包括微軟、霍尼韋爾、美國航天局等。他曾為MSDN網站和MacTec網站撰寫了有關各種操作系統平台上.NET技術的文章,並經常在業界主要技術會議上發表演講和開沒技術講座。

书籍目录

第一部分 C#和.NET平台簡介第1章 .NET之道1.1 了解.NET之前的世界1.1.1 C/Win32 API程序員的生活1.1.2 C++/MFC程序員的生活1.1.3 Visual Basic 6.0程序員的生活1.1.4 Java/J2EE程序員的生活1.1.5 COM程序員的生活1.1.6 Windows DNA程序員的生活1.2 .NET解決方案1.3 .NET平台構造塊(CLR、CTS和CLS)簡介1.4 C#的優點1.5 其他支持.NET的編程語言1.6 .NET程序集概覽1.7 單文件程序集和多文件程序集1.8 CIL的作用1.8.1 CIL的好處1.8.2 將CIL編譯成特定平台的指令1.9 .NET類型元數據的作用1.10 程序集清單的作用1.11 理解CTS1.11.1 CTS類類型1.11.2 CTS結構類型1.11.3 CTS接口類型1.11.4 CTS枚舉類型1.11.5 CTS委托類型1.11.6 CTS類型成員1.11.7 內建的CTS數據類型1.12 理解CLS1.13 理解CLR1.14 程序集/命名空間/類型的區別1.14.1 以編程方式訪問命名空間1.14.2 引用外部程序集1.15 使用ildasm.exe1.15.1 查看CIL代碼1.15.2 查看類型元數據1.15.3 查看程序集元數據1.16 部署.NET運行庫1.17 .NET的平台無關性1.18 小結第2章 構建C#應用程序2.1 安裝.NET Framework 2.0 SDK2.2 C#命令行編譯器(csc.exe)2.2.1 配置C#命令行編譯器2.2.2 配置其他.NET命令行工具2.3 使用csc.exe構建C#應用程序2.3.1 引用外部程序集2.3.2 使用csc.exe編譯多個源文件2.3.3 引用多個外部程序集2.4 使用csc.exe響應文件2.5 命令行調試器(cordbg.exe)2.6 使用TextPad構建.NET應用程序2.6.1 啟用C#關鍵字著色2.6.2 配置*.cs文件過濾器2.6.3 與csc.exe關聯2.6.4 將運行命令與菜單項相關聯2.6.5 啟用C#代碼片段2.7 使用SharpDevelop構建.NET應用程序2.7.1 SharpDevelop2.7.2 Project Scout和Classes Scout2.7.3 Assembly Scout2.7.4 Windows窗體設計器2.8 使用Visual C# 2005 Express構建.NET應用程序2.9 使用Visual Studio 2005構建.NET應用程序2.9.1 Visual Studio 20052.9.2 Solution Explorer工具2.9.3 Class View工具2.9.4 Code Definition窗口2.9.5 Object Browser工具2.9.6 集成對代碼重構的支持2.9.7 代碼擴展和圍繞技術2.9.8 可視化Class Designer2.9.9 對象測試平台2.9.10 集成的幫助系統2.10 其他.NET開發工具2.11 小結第二部分 C#編程語言第3章 C#語言基礎3.1 剖析一個簡單的C#程序3.1.1 Main()方法的其他形式3.1.2 處理命令行參數3.1.3 使用Visual Studio 2005指定命令行參數3.2 有趣的題外話︰System.Environment類3.3 定義類並創建對象3.3.1 構造函數的作用3.3.2 是內存泄露嗎3.3.3 定義“應用程序對象”3.4 System.Console類3.4.1 使用Console類進行基本的輸入和輸出3.4.2 格式化控制台輸出3.4.3 .NET字符串格式化標志3.5 設置成員的可見性3.6 類成員變量的默認值3.7 成員變量的初始化語法3.8 定義常量數據3.9 定義只讀字段3.10 static關鍵字3.10.1 靜態方法3.10.2 靜態數據3.10.3 靜態構造函數3.10.4 靜態類3.11 方法參數修飾符3.11.1 默認的參數傳遞行為3.11.2 out修飾符3.11.3 ref修飾符3.11.4 params修飾符3.12 迭代結構3.12.1 for循環3.12.2 foreach循環3.12.3 while和do/while循環結構3.13 判斷結構與關系/相等運算符3.13.1 if/else語句3.13.2 switch語句3.14 值類型和引用類型3.14.1 值類型、引用類型和賦值運算符3.14.2 包含引用類型的值類型3.14.3 按值傳遞引用類型3.14.4 按引用傳遞引用類型3.14.5 值類型和引用類型︰最後的細節3.15 裝箱與拆箱操作3.15.1 實用的裝箱和拆箱示例3.15.2 拆箱自定義的值類型3.16 使用.NET枚舉3.17 最重要的類︰System.Object3.18 重寫System.Object的一些默認行為3.18.1 重寫System.Object.ToString()3.18.2 重寫System.Object.Equals()3.18.3 重寫System.Object.GetHashCode()3.18.4 測試重寫的成員3.18.5 System.Object的靜態成員3.19 系統數據類型(和C#簡化符號)3.19.1 數值數據類型的實驗3.19.2 System.Boolean的成員3.19.3 System.Char的成員3.19.4 從字符串數據中解析數值3.19.5 System.DateTime和System.TimeSpan3.20 System.String數據類型3.20.1 基本的字符串操作3.20.2 轉義字符3.20.3 使用C#的逐字字符串3.21 System.Text.StringBuilder的作用3.22 .NET數組類型3.22.1 數組作為參數(和返回值)3.22.2 使用多維數組3.22.3 System.Array基類3.23 C#的可空類型3.23.1 使用可空類型3.23.2 ??運算符3.24 定義自定義命名空間3.24.1 類型的完全限定名3.24.2 使用別名定義命名空間3.24.3 創建嵌套的命名空間3.24.4 Visual Studio 2005中的“默認命名空間”3.25 小結第4章 C# 2.0面向對象編程4.1 C#的類類型4.1.1 方法重載4.1.2 使用C#的this進行自引用4.1.3 定義類的公共接口4.2 回顧OOP的支柱4.2.1 封裝4.2.2 繼承4.2.3 多態4.3 第一個支柱︰C#的封裝支持4.3.1 使用傳統的訪問方法和修改方法執行封裝4.3.2 另一種形式的封裝︰類屬性4.3.3 C#屬性的內部表示4.3.4 控制屬性get/set語句的可見性級別4.3.5 只讀和只寫屬性4.3.6 靜態屬性4.4 第二個支柱︰C#的繼承支持4.4.1 使用base控制基類的創建4.4.2 關于多基類4.4.3 保護家族的秘密︰protected關鍵字4.4.4 防止繼承︰密封類4.5 為包含/委托編程4.6 第三個支柱︰C#的多態支持4.6.1 virtual和override關鍵字4.6.2 再談sealed關鍵字4.6.3 抽象類4.6.4 強制多態活動︰抽象方法4.6.5 成員隱藏4.7 C#的類型轉換規則4.7.1 確定Employee的類型4.7.2 數值類型轉換4.8 C#的分部類型4.9 通過XML生成C#源代碼的文檔4.9.1 XML代碼注釋格式化字符4.9.2 轉換XML代碼注釋4.10 小結第5章 對象的生命周期5.1 類、對象和引用5.2 對象生命周期的基礎5.3 應用程序根的作用5.4 對象的代5.5 System.GC類型5.6 構建可終結對象5.6.1 重寫System.Object.Finalize()5.6.2 終結過程的細節5.7 構建可處置對象5.8 構建可終結類型和可處置類型5.9 小結第6章 結構化異常處理6.1 錯誤、bug與異常6.2 .NET異常處理的作用6.2.1 .NET異常處理的四要素6.2.2 System.Exception基類6.3 最簡單的例子6.3.1 引發普通的異常6.3.2 捕獲異常6.4 配置異常的狀態6.4.1 TargetSite屬性6.4.2 StackTrace屬性6.4.3 HelpLink屬性6.4.4 Data屬性6.5 系統級異常(System.SystemException)6.6 應用程序級異常(System.ApplicationException)6.6.1 構建自定義異常,第一部分6.6.2 構建自定義異常,第二部分6.6.3 構建自定義異常,第三部分6.7 處理多個異常6.7.1 通用的catch語句6.7.2 再次引發異常6.7.3 內部異常6.8 finally塊6.9 誰在引發什麼異常6.10 未處理異常的後果6.11 使用Visual Studio 2005調試未處理的異常6.12 小結第7章 接口與集合7.1 使用C#定義接口7.2 使用C#實現接口7.3 接口與抽象基類的對比7.4 在對象級別調用接口成員7.4.1 獲取接口引用︰as關鍵字7.4.2 獲取接口引用︰is關鍵字7.5 接口作為參數7.6 接口作為返回值7.7 接口類型數組7.8 顯式接口實現7.9 構建接口層次結構7.10 使用Visual Studio 2005實現接口7.11 構建可枚舉類型(IEnumerable和IEnumerator)7.12 構建可克隆的對象(ICloneable)7.13 構建可比較的對象(IComparable)7.13.1 指定多個排序的順序(IComparer)7.13.2 自定義屬性、自定義排序類型7.14 System.Collections命名空間的接口7.14.1 ICollection接口的作用7.14.2 IDictionary接口的作用7.14.3 IDictionaryEnumerator接口的作用7.14.4 IList接口的作用7.15 System.Collections命名空間中的類7.15.1 操作ArrayList類型7.15.2 操作Queue類型7.15.3 操作Stack類型7.16 System.Collections.Specialized命名空間7.17 小結第8章 回調接口、委托與事件8.1 回調接口8.2 .NET委托類型8.3 使用C#定義委托8.4 System.MulticastDelegate與System.Delegate基類8.5 最簡單的委托示例8.6 使用委托改造Car類型8.7 更復雜的委托示例8.7.1 委托作為參數8.7.2 分析委托代碼8.8 委托協變8.9 C#事件8.9.1 揭開事件的神秘面紗8.9.2 監听傳入的事件8.9.3 使用Visual Studio 2005簡化事件注冊8.9.4 嚴謹規範的事件8.10 C#匿名方法8.11 C#方法組轉換8.12 小結第9章 高級C#類型構造技術9.1 構建自定義索引器9.2 類型索引器的內部表示方式9.3 索引器︰最後的細節9.4 運算符重載9.5 重載二元運算符9.6 重載一元運算符9.7 重載相等于運算符9.8 重載比較運算符9.9 重載運算符的內部表示形式9.10 在不支持重載運算符的語言中使用重載運算符9.11 運算符重載的最後思考9.12 自定義類型轉換9.12.1 回顧︰數值轉換9.12.2 回顧︰相關的類類型間的轉換9.13 創建自定義轉換例程9.14 定義隱式轉換例程9.15 自定義轉換例程的內部表示9.16 C#的高級關鍵字9.16.1 checked關鍵字9.16.2 unchecked關鍵字9.16.3 指針類型9.16.4 sizeof關鍵字9.17 C#預處理指令9.17.1 指定代碼區域9.17.2 條件代碼編譯9.18 小結第10章 泛型10.1 再論裝箱、拆箱和System.Object之間的關系10.2 裝箱/拆箱操作的問題10.2.1 類型安全與強類型集合10.2.2 裝箱與強類型集合10.3 System.Collections.Generic命名空間10.4 創建泛型方法10.5 創建泛型結構(或類)10.6 創建自定義泛型集合10.6.1 使用where約束類型參數10.6.2 運算符約束的不足10.7 創建泛型基類10.8 創建泛型接口10.9 創建泛型委托10.9.1 在.NET 1.1下模擬泛型委托10.9.2 嵌套委托相關簡介10.10 小結第三部分 .NET程序集編程第11章 .NET程序集入門11.1 .NET程序集的作用11.1.1 程序集促進代碼重用11.1.2 程序集確定類型邊界11.1.3 程序集是可版本化的單元11.1.4 程序集是自描述的11.1.5 程序集是可配置的11.2 .NET程序集的格式11.2.1 Win32文件首部11.2.2 CLR文件首部11.2.3 CIL代碼、類型元數據和程序集清單11.2.4 可選的程序集資源11.2.5 單文件程序集和多文件程序集11.3 構建和使用單文件程序集11.3.1 清單11.3.2 CIL11.3.3 類型元數據11.3.4 構建C#客戶端應用程序11.3.5 構建Visual Basic .NET客戶端應用程序11.3.6 實現跨語言繼承11.4 構建和使用多文件程序集11.4.1 ufo.netmodule文件11.4.2 airvehicles.dll文件11.4.3 使用多文件程序集11.5 私有程序集11.5.1 私有程序集的標識11.5.2 探測過程11.5.3 配置私有程序集11.5.4 配置文件和Visual Studio 200511.5.5 .NET Framework 2.0配置工具簡介11.6 共享程序集11.6.1 強名稱11.6.2 為CarLibrary.dll賦予強名稱11.6.3 使用Visual Studio 2005為程序集賦予強名稱11.6.4 在GAC中安裝和移除共享程序集11.6.5 延遲簽名的作用11.7 使用共享程序集11.8 配置共享程序集11.8.1 凍結當前的共享程序集11.8.2 構建共享程序集2.0.0.0版本11.8.3 動態重定向到共享程序集的特定版本11.8.4 再次研究.NET Framework 2.0 配置工具11.9 研究GAC的內部結構11.10 發行者策略程序集11.11 < codeBase >元素11.12 System.Configuration命名空間11.13 機器配置文件11.14 程序集綁定總體流程圖11.15 小結第12章 類型反射、晚期綁定和基于特性的編程12.1 類型元數據的必要性12.1.1 查看(部分)EngineState枚舉的元數據12.1.2 查看(部分)Car類型的元數據12.1.3 研究TypeRef12.1.4 記錄定義的程序集12.1.5 記錄引用的程序集12.1.6 記錄字符串字面量12.2 反射12.2.1 System.Type類12.2.2 使用System.Object.GetType()得到Type引用12.2.3 使用System.Type.GetType()得到Type引用12.2.4 使用typeof()得到Type引用12.3 構建自定義的元數據查看器12.3.1 反射方法12.3.2 反射字段和屬性12.3.3 反射實現的接口12.3.4 顯示其他信息12.3.5 實現Main()12.3.6 反射方法參數和返回值12.4 動態加載程序集12.5 反射共享程序集12.6 晚期綁定12.6.1 System.Activator類12.6.2 調用沒有參數的方法12.6.3 調用有參數的方法12.7 特性編程12.7.1 特性的使用者12.7.2 在C#中使用預定義特性12.7.3 為特性指定構造參數12.7.4 Obsolete特性12.7.5 C#特性簡化符號12.8 構建自定義特性12.8.1 應用自定義特性12.8.2 限制特性使用12.9 程序集級別(和模塊級別)特性12.10 使用早期綁定反射特性12.11 使用晚期綁定反射特性12.12 反射、晚期綁定和自定義特性的使用背景12.13 構建可擴展的應用程序12.13.1 構建CommonSnappable-Types.dll12.13.2 構建C#插件12.13.3 構建Visual Basic.NET插件12.13.4 構建可擴展的Windows窗體應用程序12.14 小結第13章 進程、應用程序域、上下文和CLR宿主13.1 回顧傳統的Win32進程13.2 .NET平台下與進程進行交互13.2.1 列舉運行中的進程13.2.2 研究特定的進程13.2.3 研究進程的線程集合13.2.4 研究進程中的模塊集合13.2.5 以編程方式啟動或結束進程13.3 .NET應用程序域13.3.1 列舉進程中的應用程序域13.3.2 以編程方式創建新的應用程序域13.3.3 以編程方式卸載應用程序域13.4 對象上下文邊界13.4.1 上下文靈活和上下文綁定類型13.4.2 定義上下文綁定對象13.4.3 研究對象的上下文13.5 進程、應用程序域和上下文小結13.6 承載CLR13.6.1 CLR的並行執行13.6.2 加載特定的CLR版本13.6.3 其他的CLR宿主13.7 小結第14章 構建多線程應用程序14.1 進程、應用程序域、上下文及線程之間的關系14.2 .NET委托的簡短回顧14.3 委托的異步天性14.3.1 BeginInvoke()和EndInvoke()方法14.3.2 System.IAsyncResult接口14.4 異步調用方法14.4.1 同步調用線程14.4.2 AsyncCallback委托的作用14.4.3 AsyncResult類的作用14.4.4 傳遞和接收自定義狀態數據14.5 System.Threading命名空間14.6 System.Threading.Thread類14.6.1 獲得當前線程的統計信息14.6.2 Name屬性14.6.3 Priority屬性14.7 以編程方式創建次線程14.7.1 使用ThreadStart委托14.7.2 使用Parameterized-ThreadStart委托14.7.3 前台線程和後台線程14.8 並發問題14.8.1 使用C#的lock關鍵字進行同步14.8.2 使用System.Threading.Monitor類型進行同步14.8.3 使用System.Threading.Interlocked類型進行同步14.8.4 使用[Synchronization]進行同步14.9 使用Timer Callback編程14.10 CLR線程池14.11 小結第15章 CIL和動態程序集的作用15.1 CIL編程的本質15.2 研究CIL指令、特性和操作碼15.2.1 CIL指令的作用15.2.2 CIL特性的作用15.2.3 CIL操作碼的作用15.2.4 區別CIL操作碼和CIL助記符15.3 入棧和出棧︰CIL基于棧的本質15.4 正反向工程15.4.1 CIL代碼標簽的作用15.4.2 與CIL交互︰修改*.il文件15.4.3 使用ilasm.exe編譯CIL代碼15.4.4 使用SharpDevelop編譯CIL代碼15.4.5 使用ILIDE#編譯CIL代碼15.4.6 peverify.exe的作用15.5 CIL指令和特性15.5.1 在CIL中指定外部引用程序集15.5.2 在CIL中定義當前程序集15.5.3 在CIL中定義命名空間15.5.4 在CIL中定義類類型15.5.5 在CIL中定義和實現接口15.5.6 在CIL中定義結構15.5.7 在CIL中定義枚舉15.5.8 編譯CILTypes.il文件15.6 .NET基類庫、C#和CIL數據類型的映射15.7 在CIL中定義成員15.7.1 在CIL中定義數據字段15.7.2 在CIL中定義類型的構造函數15.7.3 在CIL中定義屬性15.7.4 定義成員參數15.8 剖析CIL操作碼15.8.1 了解.maxstack指令15.8.2 在CIL中聲明局部變量15.8.3 在CIL中映射參數到局部變量15.8.4 隱式this引用15.8.5 在CIL中使用循環結構15.9 使用CIL構建.NET程序集15.9.1 構建CILCars.dll15.9.2 構建CILCarClient.exe15.10 動態程序集15.10.1 System.Reflection.Emit命名空間15.10.2 System.Reflection.Emit.ILGenerator的作用15.10.3 產生動態的程序集15.10.4 產生程序集和模塊集15.10.5 ModuleBuilder類型的作用15.10.6 產生HelloClass類型和字符串成員變量15.10.7 產生構造函數15.10.8 產生HelloWorld()方法15.10.9 使用動態產生的程序集15.11 System.CodeDom簡單說明15.12 小結第四部分 使用.NET庫編程第16章 System.IO命名空間16.1 研究System.IO命名空間16.2 Directory(Info)和File(Info)類型16.3 使用DirectoryInfo類型16.3.1 FileAttributes枚舉16.3.2 使用DirectoryInfo類型列出文件16.3.3 使用DirectoryInfo類型創建子目錄16.4 使用Directory類型16.5 使用DriveInfo類類型16.6 使用FileInfo類16.6.1 FileInfo.Create()方法16.6.2 FileInfo.Open()方法16.6.3 FileInfo.OpenRead()和FileInfo.OpenWrite()方法16.6.4 FileInfo.OpenText()方法16.6.5 FileInfo.CreateText()和FileInfo.AppendText()方法16.7 使用File類型16.8 Stream抽象類16.9 使用StreamWriter和StreamReader類型16.9.1 寫文本文件16.9.2 從文本文件讀16.9.3 直接創建StreamWriter/StreamReader類型16.10 使用StringWriter和StringReader16.11 使用BinaryWriter和BinaryReader16.12 以編程方式“觀察”文件16.13 實現異步文件I/O操作16.14 小結第17章 對象序列化17.1 對象序列化17.2 為序列化配置對象17.3 選擇序列化格式化程序17.3.1 IFormatter和IRemoting- Formatting接口17.3.2 在格式化程序中的類型保真17.4 使用BinaryFormatter序列化對象17.5 使用SoapFormatter序列化對象17.6 使用XmlSerializer序列化對象17.7 持久化對象集合17.8 自定義序列化過程17.8.1 深入了解對象序列化17.8.2 使用ISerializable自定義序列化17.8.3 使用特性自定義序列化17.9 可序列化對象的版本處理17.10 小結第18章 .NET遠程處理層18.1 定義.NET遠程處理18.2 .NET遠程處理命名空間18.3 .NET遠程處理框架18.3.1 代理和消息18.3.2 信道18.3.3 .NET格式化程序的作用18.3.4 綜合討論18.3.5 擴展默認管道的簡單介紹18.4 .NET遠程處理數據交換的術語18.4.1 對象封送方式︰MBR還是MBV18.4.2 選擇MBR的激活類型︰WKO還是CAO18.4.3 WKO類型的狀態配置︰單例還是單一調用18.4.4 MBR對象類型特性小結18.5 .NET遠程處理項目的基本部署18.6 構建第一個分布式應用程序18.6.1 構建普通程序集18.6.2 構建服務器端程序集18.6.3 建立SimpleRemoteObject-Client.exe程序集18.6.4 測試遠程處理應用程序18.7 ChannelServices類型18.8 RemotingConfiguration類型18.9 WKO類型激活模式18.10 把服務器部署成遠程機器18.11 利用TCP通道18.12 簡單談談IpcChannel18.13 遠程處理配置文件18.13.1 構建服務器端*.config文件18.13.2 構建客戶端*.config文件18.14 使用MBV對象18.14.1 構建普通程序集18.14.2 構建服務器端程序集18.14.3 構建客戶端程序集18.15 客戶端激活的對象18.16 CAO/WKO-Singleton對象基于租約的生存期18.16.1 默認的租約行為18.16.2 改變默認租約特性18.16.3 服務器端租約調整18.16.4 客戶端租約調整18.17 服務器端(和客戶端)租約主辦方機制18.18 遠程對象的其他宿主18.18.1 使用Windows服務承載遠程對象18.18.2 使用IIS承載遠程對象18.19 異步遠程處理18.20 小結第19章 使用System.Windows.Forms 構建更好的窗體19.1 System.Windows.Forms命名空間概述19.2 使用Windows窗體類型19.2.1 手動創建主窗口19.2.2 重視分離關注點19.3 Application類的作用19.3.1 Application類的使用19.3.2 System.EventHandler委托19.4 剖析Form19.5 Control類的功能19.5.1 Control類的使用19.5.2 響應MouseMove事件19.5.3 檢測被單擊的鼠標鍵19.5.4 響應鍵盤事件19.6 Form類的功能19.7 使用Visual Studio 2005構建窗口應用程序19.7.1 啟用過時的控件19.7.2 研究Visual Studio 2005 Windows窗體項目19.7.3 在設計時處理事件19.7.4 Program類19.7.5 被自動引用的程序集19.8 MenuStrips和ContextMenuStrips的使用19.8.1 向MenuStrip添加TextBox19.8.2 創建上下文菜單19.8.3 選擇菜單項19.9 使用StatusStrip19.9.1 設計菜單系統19.9.2 設計StatusStrip19.9.3 用Timer類型工作19.9.4 切換顯示19.9.5 顯示菜單選擇提示符19.9.6 建立“Ready”狀態19.10 使用ToolStrip工作19.11 構建MDI運用程序19.11.1 構建父窗體19.11.2 構建子窗體19.11.3 復制子窗體19.12 小結第20章 使用GDI+繪制圖形20.1 GDI+命名空間概述20.2 System.Drawing命名空間概述20.3 System.Drawing實用類型20.3.1 Point(F)類型20.3.2 Rectangle(F)類型20.3.3 Region類20.4 Graphics類20.5 Paint會話20.5.1 使窗體的客戶區域失效20.5.2 在Paint事件處理程序外獲取Graphics對象20.5.3 關于Graphics對象的釋放20.6 GDI+坐標系統20.6.1 默認度量單位20.6.2 指定另一種度量單位20.6.3 指定另一個原點20.7 定義顏色值20.8 操作字體20.8.1 使用字體族20.8.2 使用字體名和字體大小20.8.3 枚舉安裝的字體20.8.4 FontDialog類20.9 System.Drawing.Drawing2D命名空間概述20.10 使用Pen20.11 使用Brush20.11.1 使用HatchBrush20.11.2 使用TextureBrush20.11.3 使用LinearGradient-Brushe20.12 呈現圖像20.13 PictureBox控件的拖動和單擊測試20.13.1 呈現圖像的單擊測試20.13.2 非矩形圖像的單擊測試20.14 .NET資源格式20.14.1 System.Resources命名空間20.14.2 以編程方式創建*.resx文件20.14.3 構建*.resources文件20.14.4 把*.resources文件綁定到.NET程序集20.14.5 使用ResourceWriter20.14.6 使用Visual Studio 2005生成資源20.14.7 通過編程讀取資源20.15 小結第21章 Windows窗體控件編程21.1 Windows窗體控件21.2 手動給窗體添加控件21.3 使用Visual Studio 2005給窗體添加控件21.4 基本控件的使用21.4.1 Label的作用21.4.2 TextBox的作用21.4.3 MaskedTextBox的作用21.4.4 Button的作用21.4.5 CheckBox、RadioButton和GroupBox的作用21.4.6 CheckedListBox的作用21.4.7 ListBox的作用21.4.8 ComboBox的作用21.5 配置選項卡的次序21.6 設置窗體的默認輸入按鈕21.7 更多奇特的控件21.7.1 MonthCalendar控件的作用21.7.2 ToolTip控件的作用21.7.3 TabControl控件的作用21.7.4 TrackBar的作用21.7.5 Panel的作用21.7.6 UpDown控件的作用21.7.7 ErrorProvider的作用21.7.8 TreeView的作用21.7.9 WebBrowser的作用21.8 創建自定義Windows窗體控件21.8.1 創建圖像21.8.2 構建設計時UI21.8.3 實現核心的CarControl21.8.4 定義自定義事件21.8.5 定義自定義屬性21.8.6 控制動畫21.8.7 顯示昵稱21.9 測試CarControl類型21.10 創建自定義CarControl窗體宿主21.11 System.ComponentModel命名空間的作用21.11.1 增強CarControl的設計時外觀21.11.2 定義默認的屬性和默認的事件21.11.3 指定自定義的工具箱位圖21.12 創建自定義對話框21.12.1 DialogResult屬性21.12.2 窗體繼承21.13 動態定位Windows窗體控件21.13.1 Anchor屬性21.13.2 Dock屬性21.13.3 表和流布局21.14 小結第22章 使用ADO.NET訪問數據庫22.1 ADO.NET高層次定義22.2 ADO.NET的數據提供器22.2.1 微軟提供的數據提供器22.2.2 選擇第三方的數據提供器22.3 其他的ADO.NET命名空間22.4 System.Data類型22.4.1 IDbConnection接口的作用22.4.2 IDbTransaction接口的作用22.4.3 IDbCommand接口的作用22.4.4 IDbDataParameter/IData-Parameter接口的作用22.4.5 IDbDataAdapter/IData-Adapter接口的作用22.4.6 IDataReader/IdataRecord接口的作用22.5 使用接口抽象數據提供器22.6 使用應用程序配置文件增加靈活性22.7 .NET 2.0提供器工廠模型22.7.1 為數據提供器工廠注冊22.7.2 完整的數據提供器的例子22.8 < connectionStrings >元素22.9 安裝Cars數據庫22.10 ADO.NET的連接式訪問22.10.1 使用連接對象22.10.2 使用.NET 2.0的ConnectionStringBuilder22.10.3 使用命令對象22.11 使用數據讀取器22.12 使用命令對象修改表22.12.1 插入新的記錄22.12.2 刪除現有記錄22.12.3 更新現有記錄22.13 使用參數化的命令對象22.14 使用DbCommand執行存儲過程22.15 .NET 2.0的異步數據訪問22.16 ADO.NET斷開式訪問方式22.17 DataSet的作用22.18 使用DataColumn22.18.1 構建DataColumn22.18.2 啟用列自增22.18.3 把DataColumn加入DataTable22.19 使用DataRow22.20 使用DataTable22.21 持久化DataSet(和DataTable)成為XML22.22 把DataTable呈現到用戶界面22.22.1 以編程方式刪除行22.22.2 應用過濾和排序22.22.3 更新行22.23 使用DataView類型22.24 使用數據適配器22.24.1 使用數據適配器填充DataSet22.24.2 映射數據庫名稱為友好名稱22.25 使用數據適配器對象更新數據庫22.25.1 設置InsertCommand屬性22.25.2 設置UpdateCommand屬性22.25.3 設置DeleteCommand屬性22.26 使用CommandBuilder類型自動生成SQL命令22.27 多表DataSet和DataRelation對象22.28 最後看一下(數據)向導22.28.1 強類型化的DataSet22.28.2 自動生成的數據組件22.29 小結第五部分 Web應用程序和XML Web服務第23章 ASP.NET 2.0網頁和Web控件23.1 HTTP的作用23.2 Web應用程序和Web服務23.2.1 使用IIS虛擬目錄工作23.2.2 ASP.NET 2.0開發服務器23.3 HTML的作用23.3.1 HTML文檔結構23.3.2 HTML表單開發23.3.3 構建基于HTML的用戶界面23.4 客戶端腳本的作用23.4.1 客戶端腳本示例23.4.2 驗證default.htm表單數據23.5 提交表單數據(GET和POST)23.6 構建傳統的ASP頁面23.7 傳統ASP相關問題23.7.1 ASP.NET 1.x的主要優點23.7.2 ASP.NET 2.0的主要改進23.8 ASP.NET 2.0命名空間23.9 ASP.NET網頁代碼模型23.9.1 使用單文件頁面模型23.9.2 使用代碼隱藏頁面模型23.10 ASP.NET站點目錄結構細節23.10.1 Bin文件夾的作用23.10.2 App_Code文件夾的作用23.11 ASP.NET 2.0頁面編譯周期23.11.1 單文件頁面的編譯周期23.11.2 多文件頁面的編譯周期23.12 頁面類型的繼承鏈23.13 與傳入的HTTP請求交互23.13.1 獲得瀏覽器統計數據23.13.2 訪問傳入的表單數據23.13.3 IsPostBack屬性23.14 與輸出HTTP響應交互23.14.1 提交HTML內容23.14.2 重定向用戶23.15 ASP.NET網頁的生命周期23.15.1 AutoEventWireUp特性的作用23.15.2 Error事件23.16 Web控件的本質23.16.1 取得服務器端事件處理權23.16.2 AutoPostBack屬性23.17 System.Web.UI.Control類型23.17.1 枚舉所包含的控件23.17.2 動態添加(和刪除)控件23.18 System.Web.UI.WebControls.WebControl類型的關鍵成員23.19 ASP.NET Web控件的類別23.20 構建簡單的ASP.NET 2.0站點23.20.1 使用母版頁工作23.20.2 定義Defrult.aspx內容頁面23.20.3 設計Inventory內容頁面23.20.4 設計Build a Car內容頁面23.21 驗證控件的作用23.21.1 RequiredFieldValidator23.21.2 RegularExpression-Validator23.21.3 RangeValidator23.21.4 CompareValidator23.21.5 創建ValidationSummary23.22 小結第24章 ASP.NET 2.0 Web應用程序24.1 狀態問題24.2 ASP.NET狀態管理技術24.3 ASP.NET視圖狀態的作用24.3.1 演示視圖狀態24.3.2 添加自定義視圖狀態數據24.3.3 控件狀態簡述24.4 Global.asax文件的作用24.4.1 全局最後異常事件處理程序24.4.2 HttpApplication基類24.5 應用程序狀態與會話狀態差別24.5.1 維護應用程序級的狀態數據24.5.2 修改應用程序數據24.5.3 處理Web應用程序的關閉24.6 使用應用程序緩存24.6.1 使用數據緩存24.6.2 修改*.aspx文件24.7 維護會話數據24.8 cookie24.8.1 創建cookie24.8.2 讀取傳入的cookie數據24.9 使用Web.config配置ASP.NET應用程序24.9.1 通過< trace >啟用跟蹤24.9.2 通過< customErrors >自定義錯誤輸出24.9.3 通過< sessionState >存儲狀態24.9.4 ASP.NET 2.0站點管理工具24.10 配置繼承24.11 小結第25章 XML Web服務25.1 XML Web服務的作用25.1.1 XML Web服務的優點25.1.2 定義XML Web服務客戶端25.1.3 XML Web服務的基礎25.1.4 概述XML Web服務發現25.1.5 概述XML Web服務描述25.1.6 概述傳輸協議25.2 .NET XML Web服務命名空間25.3 手動構建XML Web服務25.3.1 使用WebDev.WebServer.exe測試XML Web服務25.3.2 使用IIS測試XML Web服務25.3.3 查看WSDL合約25.4 自動生成測試頁面25.5 使用Visual Studio 2005構建XML Web服務25.6 WebService基類的作用25.7 [WebService]特性25.7.1 Namespace和Description屬性的作用25.7.2 Name屬性25.8 [WebServiceBinding]特性25.8.1 忽略BP 1.1一致性驗證25.8.2 禁用BP 1.1一致性驗證25.9 [WebMethod]特性25.9.1 通過Description屬性為Web方法歸檔25.9.2 通過MessageName屬性避免WSDL名稱沖突25.9.3 用EnableSession屬性構建有狀態的Web服務25.10 探索WSDL25.10.1 定義WSDL文檔25.10.2 < types >元素25.10.3 < message >元素25.10.4 < portType >元素25.10.5 < binding >元素25.10.6 < service >元素25.11 再談XML Web服務報文協議25.11.1 HTTP GET和HTTP POST綁定25.11.2 SOAP綁定25.12 wsdl.exe命令行的效用25.12.1 將WSDL轉換成服務器端XML Web服務框架25.12.2 將WSDL轉換為客戶端代理類25.13 查看代理服務器代碼25.13.1 默認的構造函數25.13.2 同步調用支持25.13.3 異步調用支持25.13.4 構建客戶端應用程序25.14 使用Visual Studio 2005生成代理類25.15 從Web方法公開自定義類型25.15.1 公開數組25.15.2 公開結構25.15.3 公開ADO.NET數據集25.15.4 Windows窗體客戶端25.15.5 客戶端類型代理25.16 發現服務協議(UDDI)25.17 小結第六部分 .NET 3.0擴展編程第26章 建立.NET 3.0編程環境26.1 .NET 3.0技術介紹26.2 C# 3.0和LINQ技術介紹26.3 歡迎使用.NET 3.026.4 安裝.NET Framework 3.0運行庫組件26.5 安裝Windows軟件開發包26.5.1 選擇安裝項26.5.2 研究SDK的內容26.6 安裝Visual Studio “Orcas”開發工具26.6.1 安裝WPF和WCF項目支持26.6.2 安裝Visual Studio 2005為WF提供的擴展26.7 安裝C# 3.0和LINQ社區預覽版26.8 小結第27章 WPF介紹27.1 WPF背後的動機27.1.1 通過XAML將關注點分離27.1.2 提供優化的呈現模型27.2 WPF程序集詳解27.2.1 Application類的作用27.2.2 Window類的作用27.3 創建(不使用XAML的)WPF應用程序27.3.1 擴展Window類27.3.2 創建簡單的用戶界面27.4 XAML介紹27.4.1 用XAML定義MainWindow27.4.2 用XAML定義應用對象27.4.3 通過msbuild.exe處理XAML文件27.5 將標記轉換為.NET程序集27.5.1 XAML到C#代碼的映射27.5.2 BAML的作用27.5.3 XAML到程序集的過程摘要27.6 使用代碼隱藏文件實現的關注點的分離27.7 在XamlPad中練習使用XAML27.8 使用Visual Studio “Orcas”創建WPF應用程序27.9 使用微軟表達式交互設計器生成XAML27.10 使用面板控制內容布局27.10.1 在Canvas面板中放置內容27.10.2 在WrapPanel面板中放置內容27.10.3 在StackPanel面板內放置內容27.10.4 在Grid面板中放置內容27.10.5 在DockPanel面板中放置內容27.10.6 使用嵌套的面板創建窗體的框架27.11 WPF控件27.11.1 配置WPF控件27.11.2 使用WPF控件屬性27.11.3 處理WPF控件事件27.11.4 應用控件樣式27.12 WPF圖形顯示服務簡介27.12.1 WPF圖形服務詳解27.12.2 使用基本的形狀27.12.3 WPF動畫服務介紹27.12.4 使用微軟Expression圖形設計器生成XAML27.13 XAML瀏覽器應用程序簡介27.14 小結第28章 WCF介紹28.1 WCF背後的動機28.2 探究WCF核心程序集28.3 WCF基礎28.3.1 WCF契約28.3.2 WCF綁定28.3.3 WCF地址28.4 構建完整的WCF應用程序28.4.1 組成WCF應用程序的相關程序集28.4.2 契約的定義與實現28.5 承載WCF服務28.5.1 指明ABC28.5.2 ServiceHost類型的功能28.6 < system.ServiceModel >元素的細節28.7 與WCF服務進行通信28.7.1 使用svcutil.exe生成代理代碼28.7.2 使用Visual Studio 2005生成代理代碼28.8 WCF的數據類型表示28.8.1 更新ICarOrder服務契約28.8.2 對CarOrderServiceClient程序集重新編碼28.8.3 使用XmlSerializer進行數據編碼28.8.4 使用二進制格式傳輸數據28.9 使用服務配置編輯器生成WCF配置文件28.10 小結第29章 WF介紹29.1 WF背後的動機29.2 WF的積木塊29.2.1 WF中的集成服務29.2.2 WF活動初覽29.2.3 順序工作流和狀態機工作流的作用29.2.4 深入探討工作流29.3 WF程序集和核心命名空間29.4 建造一個啟用工作流的簡單應用29.4.1 研究初始工作流的代碼29.4.2 添加Code活動29.4.3 添加While活動29.4.4 研究WF引擎承載代碼29.4.5 添加定制的起初參數29.5 在工作流中調用Web服務29.6 構建可重用的WF代碼庫29.6.1 編寫簡單的工作流29.6.2 創建啟用工作流的Windows Forms應用程序29.7 關于自定義活動的簡要說明29.8 小結第30章 C# 3.0的語言功能30.1 使用C# 3.0命令行編譯器30.2 理解隱式類型化的局部變量30.2.1 隱式類型化變量的限制30.2.2 隱式類型化的局部數組30.2.3 隱式數據類型化的最後注意事項30.3 理解擴展方法30.3.1 定義擴展方法30.3.2 在實例層次上調用擴展方法30.3.3 靜態調用擴展方法30.3.4 導入定義了擴展方法的類型30.3.5 構建和使用擴展庫30.4 理解對象初始化器30.4.1 使用初始化語法調用自定義構造函數30.4.2 初始化內部類型30.4.3 理解集合的初始化30.5 理解匿名類型30.5.1 匿名類型的內部表示方式30.5.2 方法ToString()和方法GetHashCode()的實現30.5.3 匿名類型的相等語義30.5.4 包含匿名類型的匿名類型30.6 理解Lambda表達式的角色30.6.1 Lambda表達式是更好的匿名方法30.6.2 剖析Lambda表達式30.6.3 Lambda表達式的兩種風格30.6.4 使用Lambda表達式重新編寫CarDelegate示例30.6.5 含有多個(或零個)參數的Lambda表達式30.7 小結第31章 LINQ介紹31.1 定義LINQ的作用31.2 核心LINQ程序集31.3 LINQ查詢表達式初覽31.3.1 重訪隱型局部變量31.3.2 重訪擴展方法31.4 用LINQ查詢泛型集合31.4.1 定義LINQ查詢31.4.2 重訪匿名類型31.5 使用LINQ查詢非泛型集合31.6 查詢運算符的內部表示31.6.1 用查詢運算符建立查詢表達式(復習)31.6.2 使用Sequence類型和Lambda表達式來建立查詢表達式31.6.3 使用Sequence類型和匿名方法來建立查詢表達式31.6.4 用Sequence類型和原始代理建立查詢表達式31.7 研究LINQ查詢運算符31.8 構建LINQ查詢表達式31.8.1 基本的選擇語法31.8.2 獲取數據子集31.8.3 逆轉結果集的順序31.8.4 對表達式進行排序31.8.5 轉換查詢結果以及轉換延緩執行的作用31.9 使用LINQ到SQL來查詢關系數據庫31.9.1 實體類的作用31.9.2 DataContext類型的作用31.9.3 一個LINQ到SQL的簡單例子31.9.4 建立強類型的DataContext31.9.5 詳細介紹[Table]特性和[Column]特性31.10 使用sqlmetal.exe生成實體類31.10.1 研究生成的實體類31.10.2 使用實體類來定義關系31.10.3 強類型的DataContext31.10.4 針對生成的類型來編程31.11 使用Visual Studio 2005建立實體類31.11.1 插入新項31.11.2 更新現有項31.11.3 刪除現有項31.12 使用LINQ到XML操作XML文檔31.12.1 System.Xml.XLinq命名空間31.12.2 以編程方式創建XML文檔31.12.3 裝載並分析XML內容31.13 在內存文檔中導航31.13.1 使用LINQ 到XML來選擇元素31.13.2 在XML文檔中修改數據31.14 小結

媒体关注与评论

  “问:学习C#最好的书是哪一本?答:最受推崇的是Andrew Troelsen的Pro C# with.NET3.0。”  ——MSDN论坛  “本书极为全面、细致深入地探讨了C#与.NET 2.0框架的各种特性。其中对CIL的介绍和运用尤为精彩,超过了任何其他文章和图书。绝对值得拥有。”   ——Slashdot网站  “这是一本不仅应该拥有,而且应该放在键盘旁边随时翻查的C#和.NET图书。”

编辑推荐

  《C#與.NET 3.0高級程序設計(特別版)》是Amazon超級暢銷書,C#聖經級著作,全面涵蓋C#3.0和.NET 3.0平台,包括LINQ、WPF、WCF和WF,用中間語言深入揭示各語言特性,讓你知其然,更知其所以然,國內多位微軟MVP聯手翻譯。  C#語言作為.NET平台上的第一語言。自發布以來不斷增強,已經成為目前功能最強大的通用語言之一。  《C#與.NET 3.0高級程序設計》是被譽為“C#聖經”的經典巨著,因語言生動流暢、剖析深入、涵蓋全面而廣受推崇,暢銷不衰。曾經獲得Referenceware編程圖書大獎。並入圍Jolt大獎提名。書中探討了C#語言和.NET平台的各種特性,包括重載運算符、指針、泛型等高級功能和CIL、多線程、遠程處理、GDI+、Windows窗體、ASP.NET、ADO.NET等技術,不少概念都通過lL代碼透視其背後的本質。使你知其然。更知其所以然。新版還專門用一個部分六章分別講述了C#3.0新功能和.NET 3.0的新特性,包括LINQ以及相關技術、WPF、WCF和WF。  與同類圖書不同,全書由世界級C#專家Andrew Troelsen以一人之力完成,因此寫作思路和布局謀篇都獨具匠心。中文版由國內多位微軟MVP聯手譯出。強大的譯者陣容有力地保證了權威原著的重現。

图书封面




    C#與.NET 3.0高級程序設計下載



用户评论 (总计0条)

 
 

 

計算機與互聯網 PDF免费下载,編程語言與程序設計PDF免费下载。 计算机教程网 

计算机教程网 @ 2017