C#與.NET 3.0 高級程序設計(特別版)(簡體書)
商品資訊
ISBN13:9787115168078
出版社:人民郵電出版社
作者:[美] Andrew Troelsen
出版日:2008/11/01
裝訂/頁數:平裝/972頁
版次:1
商品簡介
作者簡介
目次
相關商品
商品簡介
本書是C# 領域久負盛名的經典著作,深入全面地敘述了C# 編程語言和.NET 平臺核心,并以大量示例剖析相關概念。書中介紹了C# 的各種語言構造、.NET 2.0 的類、核心API、公共中間語言(CIL)、動態程序集和ASP.NET 擴展等內容;同時也介紹了.NET 3.0 中的新的編程API 包括WPF、WCF 和WF 的功能;另外,還介紹了最新的C# 3.0 編程語言和LINQ 編程技術。 本書由微軟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 理解CTS
1.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 理解CLS
1.13 理解CLR
1.14 程序集/命名空間/類型的區別
1.14.1 以編程方式訪問命名空間
1.14.2 引用外部程序集
1.15 使用ildasm.exe
1.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 SDK
2.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 SharpDevelop
2.7.2 Project Scout和Classes Scout
2.7.3 Assembly Scout
2.7.4 Windows窗體設計器
2.8 使用Visual C# 2005 Express構建.NET應用程序
2.9 使用Visual Studio 2005構建.NET應用程序
2.9.1 Visual Studio 2005
2.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 Designer
2.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.Object
3.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.TimeSpan
3.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 CIL
11.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 2005
11.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 研究TypeRef
12.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.dll
12.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 承載CLR
13.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.dll
15.9.2 構建CILCarClient.exe
15.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和StringReader
16.11 使用BinaryWriter和BinaryReader
16.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還是MBV
18.4.2 選擇MBR的激活類型:WKO還是CAO
18.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 簡單談談IpcChannel
18.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 剖析Form
19.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添加TextBox
19.8.2 創建上下文菜單
19.8.3 選擇菜單項
19.9 使用StatusStrip
19.9.1 設計菜單系統
19.9.2 設計StatusStrip
19.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 使用Pen
20.11 使用Brush
20.11.1 使用HatchBrush
20.11.2 使用TextureBrush
20.11.3 使用LinearGradient-Brushe
20.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 使用ResourceWriter
20.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 構建設計時UI
21.8.3 實現核心的CarControl
21.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的ConnectionStringBuilder
22.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 使用DataColumn
22.18.1 構建DataColumn
22.18.2 啟用列自增
22.18.3 把DataColumn加入DataTable
22.19 使用DataRow
22.20 使用DataTable
22.21 持久化DataSet(和DataTable)成為XML
22.22 把DataTable呈現到用戶界面
22.22.1 以編程方式刪除行
22.22.2 應用過濾和排序
22.22.3 更新行
22.23 使用DataView類型
22.24 使用數據適配器
22.24.1 使用數據適配器填充DataSet
22.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 強類型化的DataSet
22.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 RequiredFieldValidator
23.21.2 RegularExpression-Validator
23.21.3 RangeValidator
23.21.4 CompareValidator
23.21.5 創建ValidationSummary
23.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 cookie
24.8.1 創建cookie
24.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 探索WSDL
25.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.0
26.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定義MainWindow
27.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中練習使用XAML
27.8 使用Visual Studio “Orcas”創建WPF應用程序
27.9 使用微軟表達式交互設計器生成XAML
27.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圖形設計器生成XAML
27.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 指明ABC
28.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 建立強類型的DataContext
31.9.5 詳細介紹[Table]特性和[Column]特性
31.10 使用sqlmetal.exe生成實體類
31.10.1 研究生成的實體類
31.10.2 使用實體類來定義關系
31.10.3 強類型的DataContext
31.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 小結
第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 理解CTS
1.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 理解CLS
1.13 理解CLR
1.14 程序集/命名空間/類型的區別
1.14.1 以編程方式訪問命名空間
1.14.2 引用外部程序集
1.15 使用ildasm.exe
1.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 SDK
2.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 SharpDevelop
2.7.2 Project Scout和Classes Scout
2.7.3 Assembly Scout
2.7.4 Windows窗體設計器
2.8 使用Visual C# 2005 Express構建.NET應用程序
2.9 使用Visual Studio 2005構建.NET應用程序
2.9.1 Visual Studio 2005
2.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 Designer
2.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.Object
3.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.TimeSpan
3.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 CIL
11.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 2005
11.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 研究TypeRef
12.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.dll
12.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 承載CLR
13.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.dll
15.9.2 構建CILCarClient.exe
15.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和StringReader
16.11 使用BinaryWriter和BinaryReader
16.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還是MBV
18.4.2 選擇MBR的激活類型:WKO還是CAO
18.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 簡單談談IpcChannel
18.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 剖析Form
19.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添加TextBox
19.8.2 創建上下文菜單
19.8.3 選擇菜單項
19.9 使用StatusStrip
19.9.1 設計菜單系統
19.9.2 設計StatusStrip
19.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 使用Pen
20.11 使用Brush
20.11.1 使用HatchBrush
20.11.2 使用TextureBrush
20.11.3 使用LinearGradient-Brushe
20.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 使用ResourceWriter
20.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 構建設計時UI
21.8.3 實現核心的CarControl
21.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的ConnectionStringBuilder
22.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 使用DataColumn
22.18.1 構建DataColumn
22.18.2 啟用列自增
22.18.3 把DataColumn加入DataTable
22.19 使用DataRow
22.20 使用DataTable
22.21 持久化DataSet(和DataTable)成為XML
22.22 把DataTable呈現到用戶界面
22.22.1 以編程方式刪除行
22.22.2 應用過濾和排序
22.22.3 更新行
22.23 使用DataView類型
22.24 使用數據適配器
22.24.1 使用數據適配器填充DataSet
22.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 強類型化的DataSet
22.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 RequiredFieldValidator
23.21.2 RegularExpression-Validator
23.21.3 RangeValidator
23.21.4 CompareValidator
23.21.5 創建ValidationSummary
23.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 cookie
24.8.1 創建cookie
24.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 探索WSDL
25.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.0
26.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定義MainWindow
27.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中練習使用XAML
27.8 使用Visual Studio “Orcas”創建WPF應用程序
27.9 使用微軟表達式交互設計器生成XAML
27.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圖形設計器生成XAML
27.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 指明ABC
28.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 建立強類型的DataContext
31.9.5 詳細介紹[Table]特性和[Column]特性
31.10 使用sqlmetal.exe生成實體類
31.10.1 研究生成的實體類
31.10.2 使用實體類來定義關系
31.10.3 強類型的DataContext
31.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 小結
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。