精通C#(第6版)

精通C#(第6版) pdf epub mobi txt 電子書 下載2025

出版者:人民郵電齣版社
作者:[美] Andrew Troelsen
出品人:
頁數:1228
译者:姚琪琳
出版時間:2013-7
價格:159.00元
裝幀:平裝
isbn號碼:9787115321817
叢書系列:圖靈程序設計叢書·微軟技術係列
圖書標籤:
  • C
  • #.NET
  • 程序設計
  • 計算機
  • 編程
  • 軟件開發
  • Programming
  • 計算機編程
  • C#
  • NET
  • 編程
  • 開發
  • 麵嚮對象
  • 微軟
  • 算法
  • 設計模式
  • 高效編程
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

本書是C# 領域久負盛名的經典著作,深入全麵地講解瞭C# 編程語言和.NET 平颱的核心內容,並結閤大量示例剖析相關概念。全書分為八部分:C# 和.NET 平颱、C# 核心編程結構、C# 麵嚮對象編程、高級C# 編程結構、用.NET 程序集編程、.NET 基礎類庫、WPF 和ASP.NET Web Forms。第6 版是對第5 版的進一步更新和完善,內容涵蓋瞭最先進的.NET 編程技術和技巧,並準確呈現齣C# 編程語言的最新變化和.NET 4.5 Framework 的新特性。

本書由微軟C# MVP Andrew Troelsen 編寫,第6 版專門針對C# 5.0 和.NET 4.5 進行瞭細緻入微的修訂,是各層次.NET 開發人員的必讀之作。

著者簡介

Andrew Troelsen

世界級C#專傢,微軟Visual C# MVP。他是著名的微軟技術谘詢企業Intertech的閤夥人和副總裁,該公司的客戶包括微軟、霍尼韋爾、美國國傢航空航天局等。他曾是MSDN網站和MacTech網站.NET技術帖專傢,並經常在業界主要技術會議上發錶演講和開設技術講座。他還是公認的C#和.NET暢銷技術書作傢。除本書外,他還著有Pro Expression Blend 4、Pro VB 2008 and the .NET 3.5 Platform和COM and .NET Interoperability等近二十部.NET技術方麵的著作。

圖書目錄

目 錄

第一部分 C#與.NET平颱
第1章 .NET之道 2
1.1  初識.NET平颱  2
1.2  .NET平颱構造塊(CLR、CTS和CLS)簡介  3
1.2.1  基礎類庫的作用  3
1.2.2  C#的優點  4
1.2.3  托管代碼與非托管代碼  5
1.3  其他支持.NET的編程語言  5
1.4  .NET程序集概覽  7
1.4.1  CIL的作用  8
1.4.2  .NET類型元數據的作用  10
1.4.3  程序集清單的作用  11
1.5  CTS  12
1.5.1  CTS類類型  12
1.5.2  CTS接口類型  12
1.5.3  CTS結構類型  13
1.5.4  CTS枚舉類型  13
1.5.5  CTS委托類型  13
1.5.6  CTS類型成員  14
1.5.7  內建的CTS數據類型  14
1.6  CLS  15
1.7  CLR  16
1.8  程序集/命名空間/類型的區彆  17
1.8.1  Microsoft根命名空間的作用  20
1.8.2  以編程方式訪問命名空間  20
1.8.3  引用外部程序集  21
1.9  使用ildasm.exe探索程序集  22
1.9.1  查看CIL代碼  23
1.9.2  查看類型元數據  23
1.9.3  查看程序集元數據(即清單)  24
1.10  .NET的平颱無關性  24
1.11  Windows 8應用程序簡介  25
1.11.1  構建Windows 8應用程序  26
1.11.2  .NET在Windows 8中的作用  27
1.12  小結  28
第2章 構建C#應用程序  29
2.1  .NET Framework 4.5 SDK的作用  29
2.2  用csc.exe構建C#應用程序  30
2.2.1  指定輸入輸齣目標  31
2.2.2  引用外部程序集  32
2.2.3  引用多個外部程序集  33
2.2.4  編譯多個源文件  33
2.2.5  使用C#響應文件  34
2.3  使用Notepad++構建.NET應用程序  35
2.4  使用SharpDevelop構建.NET應用程序  36
2.5  使用Visual C# Express構建.NET應用程序  38
2.6  使用Visual Studio構建.NET應用程序  39
2.6.1  Visual Studio的獨特功能  39
2.6.2  使用New Project對話框指嚮.NET Framework  40
2.6.3  解決方案資源管理器  40
2.6.4  Class View工具  42
2.6.5  Object Browser工具  43
2.6.6  集成對代碼重構的支持  43
2.6.7  代碼擴展和圍繞技術  45
2.6.8  可視化Class Designer  47
2.6.9  集成的.NET Framework 4.5 SDK文檔係統  50
2.7  小結  51
第二部分 C#核心編程結構
第3章 C#核心編程結構Ⅰ  54
3.1  一個簡單的C#程序  54
3.1.1  Main()方法的其他形式  55
3.1.2  指定應用程序錯誤代碼  56
3.1.3  處理命令行參數  57
3.1.4  使用Visual Studio指定命令行參數  59
3.2  有趣的題外話:System.Environment類的其他成員  59
3.3  System.Console類  61
3.3.1  使用Console類進行基本的輸入和輸齣  61
3.3.2  格式化控製颱輸齣  62
3.3.3  格式化數值數據  63
3.3.4  在控製颱應用程序外格式化數值數據  64
3.4  係統數據類型和相應的C#關鍵字  64
3.4.1  變量聲明和初始化  65
3.4.2  內建數據類型與new操作符  67
3.4.3  數據類型類的層次結構  67
3.4.4  數值數據類型的成員  69
3.4.5  System.Boolean的成員  69
3.4.6  System.Char的成員  69
3.4.7  從字符串數據中解析數值  70
3.4.8  System.DateTime和System.TimeSpan  70
3.4.9  System.Numerics.dll程序集  71
3.5  使用字符串數據  72
3.5.1  基本的字符串操作  73
3.5.2  字符串拼接  73
3.5.3  轉義字符  74
3.5.4  定義逐字字符串  75
3.5.5  字符串和相等性  75
3.5.6  字符串是不可變的  76
3.5.7  System.Text.StringBuilder類型  77
3.6  窄化和寬化數據類型轉換  78
3.6.1  checked關鍵字  80
3.6.2  設定項目級彆的溢齣檢測  81
3.6.3  unchecked關鍵字  82
3.7  隱式類型本地變量  82
3.7.1  隱式類型變量的限製  84
3.7.2  隱式類型數據是強類型數據  84
3.7.3  隱式類型本地變量的用途  85
3.8  C#迭代結構  86
3.8.1  for循環  86
3.8.2  foreach循環  87
3.8.3  while和do/while循環結構  87
3.9  條件結構和關係/相等操作符  88
3.9.1  if/else語句  88
3.9.2  關係/相等操作符  88
3.9.3  邏輯操作符  89
3.9.4  switch語句  89
3.10  小結  91
第4章 C#核心編程結構Ⅱ  92
4.1  方法和參數修飾符  92
4.1.1  默認的參數傳遞行為  93
4.1.2  out修飾符  94
4.1.3  ref修飾符  95
4.1.4  params修飾符  96
4.1.5  定義可選參數  97
4.1.6  使用命名參數調用方法  98
4.1.7  成員重載  99
4.2  C#數組  101
4.2.1  C#數組初始化語法  102
4.2.2  隱式類型本地數組  103
4.2.3  定義object數組  103
4.2.4  使用多維數組  104
4.2.5  數組作為參數(和返迴值)  105
4.2.6  System.Array基類  106
4.3  枚舉類型  107
4.3.1  控製枚舉的底層存儲  108
4.3.2  聲明枚舉變量  109
4.3.3  System.Enum類型  110
4.3.4  動態獲取枚舉的名稱/值對  110
4.4  結構類型  112
4.5  值類型和引用類型  115
4.5.1  值類型、引用類型和賦值操作符  116
4.5.2  包含引用類型的值類型  117
4.5.3  按值傳遞引用類型  119
4.5.4  按引用傳遞引用類型  120
4.5.5  值類型和引用類型:最後的細節  121
4.6  C#可空類型  122
4.6.1  使用可空類型  123
4.6.2  ??操作符  124
4.7  小結  124
第三部分 C#麵嚮對象編程
第5章 封裝  126
5.1  C#類類型  126
5.2  構造函數  129
5.2.1  默認構造函數的作用  129
5.2.2  定義自定義的構造函數  130
5.2.3  再談默認構造函數  131
5.3  this關鍵字的作用  132
5.3.1  使用this進行串聯構造函數調用  133
5.3.2  觀察構造函數流程  135
5.3.3  再談可選參數  137
5.4  static關鍵字  138
5.4.1  定義靜態數據  138
5.4.2  定義靜態方法  140
5.4.3  定義靜態構造函數  141
5.4.4  定義靜態類  143
5.5  定義OOP的支柱  144
5.5.1  封裝的作用  144
5.5.2  繼承的作用  144
5.5.3  多態的作用  146
5.6  C#訪問修飾符  147
5.6.1  默認的訪問修飾符  148
5.6.2  訪問修飾符和嵌套類型  148
5.7  第一個支柱:C#的封裝服務  149
5.7.1  使用傳統的訪問方法和修改方法執行封裝  149
5.7.2  使用.NET屬性進行封裝  151
5.7.3  使用類的屬性  154
5.7.4  隻讀和隻寫屬性  155
5.7.5  靜態屬性  156
5.8  自動屬性  156
5.8.1  與自動屬性交互  158
5.8.2  關於自動屬性和默認值  158
5.9  對象初始化語法  160
5.9.1  使用初始化語法調用自定義構造函數  161
5.9.2  初始化內部類型  162
5.10  常量數據  163
5.10.1  隻讀字段  164
5.10.2  靜態隻讀字段  165
5.11  分部類型  165
5.12  小結  167
第6章 繼承和多態  168
6.1  繼承的基本機製  168
6.1.1  指定既有類的父類  169
6.1.2  多個基類  170
6.1.3  sealed關鍵字  171
6.2  迴顧Visual Studio類關係圖  172
6.3  OOP的第二個支柱:繼承  173
6.3.1  使用base關鍵字控製基類的創建  174
6.3.2  傢族的秘密:protected關鍵字  176
6.3.3  增加密封類  177
6.4  包含/委托編程  178
6.5  OOP的第三個支柱:C#的多態支持  180
6.5.1  virtual和override關鍵字  181
6.5.2  使用Visual Studio IDE重寫虛方法  183
6.5.3  密封虛成員  184
6.5.4  抽象類  184
6.5.5  構建多態接口  186
6.5.6  成員投影  189
6.6  基類/派生類的轉換規則  191
6.6.1  C#的as關鍵字  192
6.6.2  C#的is關鍵字  193
6.7  超級父類:System.Object  193
6.7.1  重寫System.Object.ToString()  196
6.7.2  重寫System.Object.Equals()  196
6.7.3  重寫System.Object.GetHashCode()  197
6.7.4  測試修改後的Person類  198
6.7.5  System.Object的靜態成員  199
6.8  小結  199
第7章 結構化異常處理  200
7.1  錯誤、bug與異常  200
7.2  .NET異常處理的作用  201
7.2.1  .NET異常處理的四要素  202
7.2.2  System.Exception基類  202
7.3  最簡單的例子  203
7.3.1  引發普通的異常  205
7.3.2  捕獲異常  206
7.4  配置異常的狀態  207
7.4.1  TargetSite屬性  207
7.4.2  StackTrace屬性  208
7.4.3  HelpLink屬性  208
7.4.4  Data屬性  209
7.5  係統級異常  211
7.6  應用程序級異常  211
7.6.1  構建自定義異常,第一部分  212
7.6.2  構建自定義異常,第二部分  213
7.6.3  構建自定義異常,第三部分  214
7.7  處理多個異常  215
7.7.1  通用的catch語句  217
7.7.2  再次引發異常  218
7.7.3  內部異常  218
7.7.4  finally塊  219
7.8  誰在引發什麼異常  220
7.9  未處理異常的後果  220
7.10  使用Visual Studio調試未處理的異常  221
7.11  小結  222
第8章 接口  223
8.1  接口類型  223
8.2  定義自定義接口  226
8.3  實現接口  227
8.4  在對象級彆調用接口成員  229
8.4.1  獲取接口引用:as關鍵字  230
8.4.2  獲取接口引用:is關鍵字  230
8.5  接口作為參數  231
8.6  接口作為返迴值  233
8.7  接口類型數組  233
8.8  使用Visual Studio實現接口  234
8.9  顯式接口實現  235
8.10  設計接口層次結構  238
8.11  構建可枚舉類型(IEnumerable和IEnumerator)  241
8.11.1  用yield關鍵字構建迭代器方法  243
8.11.2  構建命名迭代器  244
8.12  構建可剋隆的對象(ICloneable)  245
8.13  構建可比較的對象(IComparable)  249
8.13.1  指定多個排序順序  252
8.13.2  自定義屬性、自定義排序類型  253
8.14  小結  253
第四部分 高級C#編程結構
第9章 集閤與泛型  256
9.1  集閤類的動機  256
9.1.1  System.Collections命名空間  257
9.1.2  System.Collections.Specialized命名空間  259
9.2  非泛型集閤的問題  260
9.2.1  性能問題  260
9.2.2  類型安全問題  263
9.2.3  初識泛型集閤  265
9.3  泛型類型參數的作用  266
9.3.1  為泛型類/結構指定類型參數  267
9.3.2  為泛型成員指定類型參數  268
9.3.3  為泛型接口指定類型參數  269
9.4  System.Collections.Generic命名空間  270
9.4.1  集閤初始化語法  271
9.4.2  使用List<T>類  272
9.4.3  使用Stack<T>類  273
9.4.4  使用Queue<T>類  274
9.4.5  使用SortedSet<T>類  275
9.5  System.Collections.ObjectModel命名空間  277
9.6  創建自定義泛型方法  279
9.7  創建自定義泛型結構和類  282
9.8  類型參數的約束  284
9.8.1  使用where關鍵字的示例  284
9.8.2  操作符約束的不足  285
9.9  小結  286
第10章 委托、事件和Lambda錶達式  287
10.1  .NET委托類型  287
10.1.1  在C#中定義委托類型  288
10.1.2  System.MulticastDelegate與System.Delegate基類  290
10.2  最簡單的委托示例  291
10.3  使用委托發送對象狀態通知  293
10.3.1  支持多路廣播  296
10.3.2  從委托的調用列錶中移除成員  297
10.3.3  方法組轉換語法  298
10.4  泛型委托  300
10.5  C#事件  303
10.5.1  event關鍵字  304
10.5.2  揭開事件的神秘麵紗  305
10.5.3  監聽傳入的事件  306
10.5.4  使用Visual Studio簡化事件注冊  307
10.5.5  創建自定義的事件參數  308
10.5.6  泛型EventHandler<T>委托  309
10.6  C#匿名方法  310
10.7  Lambda錶達式  313
10.7.1  剖析Lambda錶達式  315
10.7.2  使用多個語句處理參數  316
10.7.3  含有多個(或零個)參數的Lambda錶達式  317
10.7.4  使用Lambda錶達式重新編寫CarEvents示例  318
10.8  小結  319
第11章 高級C#語言特性  320
11.1  索引器方法  320
11.1.1  使用字符串值索引對象  322
11.1.2  重載索引器方法  323
11.1.3  多維的索引器  323
11.1.4  在接口類型上定義索引器  324
11.2  操作符重載  325
11.2.1  重載二元操作符  325
11.2.2  +=與-=操作符  327
11.2.3  重載一元操作符  328
11.2.4  重載相等操作符  329
11.2.5  重載比較操作符  329
11.2.6  操作符重載的最後思考  330
11.3  自定義類型轉換  331
11.3.1  迴顧:數值轉換  331
11.3.2  迴顧:相關的類類型間的轉換  331
11.3.3  創建自定義轉換例程  332
11.3.4  Square類型的其他顯式轉換  334
11.3.5  定義隱式轉換例程  335
11.4  擴展方法  336
11.4.1  定義擴展方法  336
11.4.2  在實例層次上調用擴展方法  337
11.4.3  導入擴展方法  338
11.4.4  擴展方法的智能感知  339
11.4.5  擴展實現瞭指定接口的類型  339
11.5  匿名類型  340
11.5.1  定義匿名類型  341
11.5.2  匿名類型的內部錶示方式  342
11.5.3  方法ToString()和GetHashCode()的實現  343
11.5.4  匿名類型的相等語義  344
11.5.5  包含匿名類型的匿名類型  345
11.6  指針類型  346
11.6.1  unsafe關鍵字  347
11.6.2  *和&操作符  348
11.6.3  不安全(與安全)交換功能  349
11.6.4  通過指針訪問字段  350
11.6.5  stackalloc關鍵字  350
11.6.6  使用fixed關鍵字固定類型  351
11.6.7  sizeof關鍵字  352
11.7  小結  352
第12章 LINQ to Object  353
12.1  LINQ特有的編程結構  353
12.1.1  隱式類型本地變量  354
12.1.2  對象和集閤初始化語法  354
12.1.3  Lambda錶達式  355
12.1.4  擴展方法  355
12.1.5  匿名類型  356
12.2  LINQ的作用  356
12.2.1  LINQ錶達式是強類型的  357
12.2.2  核心LINQ程序集  357
12.3  將LINQ查詢應用於原始數組  358
12.3.1  再一次,不使用LINQ  359
12.3.2  反射LINQ結果集  360
12.3.3  LINQ和隱式類型本地變量  361
12.3.4  LINQ和擴展方法  362
12.3.5  延遲執行的作用  363
12.3.6  立即執行的作用  364
12.4  返迴LINQ查詢的結果  365
12.5  將LINQ查詢應用到集閤對象  367
12.5.1  訪問包含的子對象  367
12.5.2  將LINQ查詢應用於非泛型集閤  368
12.5.3  使用OfType<T>()篩選數據  369
12.6  C# LINQ查詢操作符  369
12.6.1  基本的選擇語法  371
12.6.2  獲取數據子集  371
12.6.3  投影新數據類型  372
12.6.4  使用Enumerable獲取總數  373
12.6.5  反轉結果集  373
12.6.6  對錶達式進行排序  374
12.6.7  維恩圖工具  374
12.6.8  移除重復  375
12.6.9  LINQ聚閤操作  376
12.7  LINQ查詢語句的內部錶示  376
12.7.1  用查詢操作符建立查詢錶達式(復習)  377
12.7.2  使用Enumerable類型和Lambda錶達式來建立查詢錶達式  377
12.7.3  使用Enumerable類型和匿名方法來建立查詢錶達式  379
12.7.4  用Enumerable類型和原始委托建立查詢錶達式  379
12.8  小結  380
第13章 對象的生命周期  381
13.1  類、對象和引用  381
13.2  對象生命周期的基礎  382
13.2.1  CIL的new指令  383
13.2.2  將對象引用設置為空  384
13.3  應用程序根的作用  385
13.4  對象的代  386
13.5  .NET 1.0 至.NET 3.5的並發垃圾迴收  387
13.6  .NET 4.0及後續版本  387
13.7  System.GC類型  388
13.8  構建可終結對象  391
13.8.1  重寫System.Object.Finalize()  392
13.8.2  終結過程的細節  393
13.9  構建可處置對象  394
13.10  構建可終結類型和可處置類型  397
13.11  延遲對象實例化  400
13.12  小結  403
第五部分 用.NET程序集編程
第14章 .NET程序集入門  406
14.1  定義自定義命名空間  406
14.1.1  使用完全限定名解決命名衝突  408
14.1.2  使用彆名解決命名衝突  409
14.1.3  創建嵌套的命名空間  410
14.1.4  Visual Studio 的默認命名空間  411
14.2  .NET程序集的作用  412
14.2.1  程序集促進代碼重用  412
14.2.2  程序集確定類型邊界  412
14.2.3  程序集是可版本化的單元  412
14.2.4  程序集是自描述的  413
14.2.5  程序集是可配置的  413
14.3  .NET程序集的格式  413
14.3.1  Windows文件首部  413
14.3.2  CLR文件首部  414
14.3.3  CIL代碼、類型元數據和程序集清單  415
14.3.4  可選的程序集資源  415
14.4  構建和使用自定義類庫  416
14.4.1  清單  418
14.4.2  CIL  421
14.4.3  類型元數據  421
14.4.4  構建C#客戶端應用程序  422
14.4.5  構建Visual Basic客戶端應用程序  424
14.4.6  實現跨語言繼承  425
14.5  私有程序集  425
14.5.1  私有程序集的標識  426
14.5.2  探測過程  426
14.5.3  配置私有程序集  427
14.5.4  App.Config文件  428
14.6  共享程序集  430
14.6.1  全局程序集緩存  430
14.6.2  強名稱  431
14.6.3  在命令行生成強名稱  432
14.6.4  使用Visual Studio為程序集賦予強名稱  434
14.6.5  在GAC中安裝強名稱的程序集  436
14.7  使用共享程序集  437
14.8  配置共享程序集  439
14.8.1  凍結當前的共享程序集  439
14.8.2  構建共享程序集2.0.0.0版本  440
14.8.3  動態重定嚮到共享程序集的特定版本  441
14.9  發行者策略程序集  443
14.10  <codeBase>元素  444
14.11  System.Configuration命名空間  446
14.12  配置文件架構文檔  447
14.13  小結  448
第15章 類型反射、晚期綁定和基於特性的編程  449
15.1  類型元數據的必要性  449
15.1.1  查看(部分)EngineState枚舉的元數據  450
15.1.2  查看(部分)Car類型的元數據  451
15.1.3  研究TypeRef  452
15.1.4  記錄定義的程序集  452
15.1.5  記錄引用的程序集  453
15.1.6  記錄字符串字麵量  453
15.2  反射  454
15.2.1  System.Type類  454
15.2.2  使用System.Object.GetType()得到Type引用  455
15.2.3  使用typeof()得到Type引用  455
15.2.4  使用System.Type.GetType()得到Type引用  455
15.3  構建自定義的元數據查看器  456
15.3.1  反射方法  456
15.3.2  反射字段和屬性  457
15.3.3  反射實現的接口  457
15.3.4  顯示其他信息  458
15.3.5  實現Main()  458
15.3.6  反射泛型類型  460
15.3.7  反射方法參數和返迴值  460
15.4  動態加載程序集  461
15.5  反射共享程序集  464
15.6  晚期綁定  465
15.6.1  System.Activator類  466
15.6.2  調用沒有參數的方法  467
15.6.3  調用有參數的方法  468
15.7  .NET特性的作用  469
15.7.1  特性的使用者  470
15.7.2  在C#中使用特性  470
15.7.3  C#特性簡化符號  471
15.7.4  為特性指定構造參數  472
15.7.5  Obsolete特性  472
15.8  構建自定義特性  473
15.8.1  應用自定義特性  473
15.8.2  命名屬性語法  474
15.8.3  限製特性使用  474
15.9  程序集級彆特性  475
15.10  使用早期綁定反射特性  477
15.11  使用晚期綁定反射特性  478
15.12  反射、晚期綁定和自定義特性的使用背景  479
15.13  構建可擴展的應用程序  480
15.13.1  構建CommonSnappable-Types.dll  480
15.13.2  構建C#插件  481
15.13.3  構建Visual Basic插件  482
15.13.4  構建可擴展的Windows Forms應用程序  482
15.14  小結  485
第16章 動態類型和動態語言運行時  486
16.1  dynamic關鍵字的作用  486
16.1.1  調用動態聲明的數據的成員  488
16.1.2  Microsoft.CSharp.dll程序集的作用  489
16.1.3  dynamic關鍵字的作用域  490
16.1.4  dynamic關鍵字的限製  491
16.1.5  dynamic關鍵字的實際用途  491
16.2  DLR的作用  492
16.2.1  錶達式樹的作用  492
16.2.2  System.Dynamic命名空間的作用  493
16.2.3  錶達式樹的動態運行時查找  493
16.3  使用動態類型簡化後期綁定調用  494
16.4  使用動態數據簡化COM互操作  497
16.4.1  主互操作程序集的作用  498
16.4.2  嵌入互操作元數據  499
16.4.3  普通COM互操作的難點  500
16.5  使用C# 動態數據進行COM互操作  500
16.6  不使用C# 動態數據進行COM互操作  504
16.7  小結  505
第17章 進程、應用程序域和對象上下文  506
17.1  Windows進程的作用  506
17.2  .NET平颱下與進程進行交互  508
17.2.1  列舉運行中的進程  510
17.2.2  特定的進程  511
17.2.3  進程的綫程集閤  511
17.2.4  進程中的模塊集閤  513
17.2.5  以編程方式啓動或結束進程  514
17.2.6  使用ProcessStartInfo類控製進程的啓動  515
17.3  .NET應用程序域  516
17.4  與默認應用程序域進行交互  518
17.4.1  枚舉加載的程序集  519
17.4.2  接收程序集加載通知  520
17.5  創建新的應用程序域  521
17.5.1  在自定義應用程序域中加載程序集  522
17.5.2  以編程方式卸載應用程序域  523
17.6  對象上下文邊界  525
17.6.1  上下文靈活和上下文綁定類型  525
17.6.2  定義上下文綁定對象  526
17.6.3  研究對象的上下文  526
17.7  進程、應用程序域和上下文小結  528
17.8  小結  528
第18章 CIL和動態程序集的作用  529
18.1  學習CIL語法的原因  529
18.2  CIL指令、特性和操作碼  530
18.2.1  CIL指令的作用  530
18.2.2  CIL特性的作用  530
18.2.3  CIL操作碼的作用  531
18.2.4  區彆CIL操作碼和CIL助記符  531
18.3  入棧和齣棧:CIL基於棧的本質  532
18.4  正反嚮工程  533
18.4.1  CIL代碼標簽的作用  536
18.4.2  與CIL交互:修改*.il文件  536
18.4.3  使用ilasm.exe編譯CIL代碼  537
18.4.4  peverify.exe的作用  538
18.5  CIL指令和特性  539
18.5.1  在CIL中指定外部引用程序集  539
18.5.2  在CIL中定義當前程序集  539
18.5.3  在CIL中定義命名空間  540
18.5.4  在CIL中定義類類型  540
18.5.5  在CIL中定義和實現接口  541
18.5.6  在CIL中定義結構  542
18.5.7  在CIL中定義枚舉  542
18.5.8  在CIL中定義泛型  543
18.5.9  編譯CILTypes.il文件  543
18.6  .NET基礎類庫、C#和CIL數據類型的映射  544
18.7  在CIL中定義類型成員  544
18.7.1  在CIL中定義數據字段  545
18.7.2  在CIL中定義類型的構造函數  545
18.7.3  在CIL中定義屬性  546
18.7.4  定義成員參數  546
18.8  剖析CIL操作碼  547
18.8.1  .maxstack指令  548
18.8.2  在CIL中聲明本地變量  549
18.8.3  在CIL中映射參數到本地變量  550
18.8.4  this隱式引用  550
18.8.5  在CIL中使用循環結構  551
18.9  使用CIL構建.NET程序集  551
18.9.1  構建CILCars.dll  551
18.9.2  構建CILCarClient.exe  554
18.10  動態程序集  555
18.10.1  System.Reflection.Emit命名空間  556
18.10.2  System.Reflection.Emit.ILGenerator的作用  557
18.10.3  産生動態的程序集  557
18.10.4  産生程序集和模塊集  559
18.10.5  ModuleBuilder類型的作用  560
18.10.6  産生HelloClass類型和字符串成員變量  561
18.10.7  産生構造函數  561
18.10.8  産生SayHello()方法  562
18.10.9  使用動態産生的程序集  563
18.11  小結  564
第六部分 .NET基礎類庫
第19章 多綫程、並行和異步編程  566
19.1  進程、應用程序域、上下文及綫程之間的關係  566
19.1.1  並發問題  567
19.1.2  綫程同步的作用  568
19.2  .NET委托的簡短迴顧  568
19.3  委托的異步性  570
19.3.1  BeginInvoke()和EndInvoke()方法  570
19.3.2  System.IAsyncResult接口  570
19.4  異步調用方法  571
19.4.1  同步調用綫程  572
19.4.2  AsyncCallback委托的作用  573
19.4.3  AsyncResult類的作用  575
19.4.4  傳遞和接收自定義狀態數據  575
19.5  System.Threading命名空間  576
19.6  System.Threading.Thread類  577
19.6.1  獲得當前執行綫程的統計信息  578
19.6.2  Name屬性  579
19.6.3  Priority屬性  579
19.7  手工創建次綫程  580
19.7.1  使用ThreadStart委托  580
19.7.2  使用ParameterizedThreadStart委托  582
19.7.3  AutoResetEvent類  583
19.7.4  前颱綫程和後颱綫程  584
19.8  並發問題  585
19.8.1  使用C#的lock關鍵字進行同步  588
19.8.2  使用System.Threading.Monitor類型進行同步  589
19.8.3  使用System.Threading.Interlocked類型進行同步  590
19.8.4  使用[Synchronization]特性進行同步  591
19.9  使用TimerCallback編程  592
19.10  CLR綫程池  593
19.11  使用任務並行庫進行並行編程  595
19.11.1  任務並行庫API  595
19.11.2  Parallel類的作用  596
19.11.3  使用Parallel類的數據並行  596
19.11.4  在次綫程中訪問UI元素  598
19.11.5  Task類  599
19.11.6  處理取消請求  599
19.11.7  使用並行類的任務並行  601
19.12  並行LINQ查詢(PLINQ)  603
19.12.1  使用PLINQ查詢  604
19.12.2  取消PLINQ查詢  604
19.13  .NET 4.5下的異步調用  605
19.13.1  C# async和await關鍵字初探  606
19.13.2  異步方法的命名約定  607
19.13.3  返迴void的異步方法  609
19.13.4  具有多個await的異步方法  609
19.13.5  用async/await改進AddWithThreads示例  610
19.14  小結  611
第20章 文件輸入輸齣和對象序列化  612
20.1  研究System.IO命名空間  612
20.2  Directory(Info)和File(Info)類型  613
20.3  使用DirectoryInfo類型  614
20.3.1  使用DirectoryInfo類型枚舉齣文件  616
20.3.2  使用DirectoryInfo類型創建子目錄  616
20.4  使用Directory類型  617
20.5  使用DriveInfo類類型  618
20.6  使用FileInfo類  619
20.6.1  FileInfo.Create()方法  620
20.6.2  FileInfo.Open()方法  621
20.6.3  FileInfo.OpenRead()和FileInfo.OpenWrite()方法  622
20.6.4  FileInfo.OpenText()方法  622
20.6.5  FileInfo.CreateText()和FileInfo.AppendText()方法  623
20.7  使用File類型  623
20.8  Stream抽象類  625
20.9  使用StreamWriter和StreamReader類型  627
20.9.1  寫文本文件  628
20.9.2  讀文本文件  628
20.9.3  直接創建StreamWriter/StreamReader類型  629
20.10  使用StringWriter和StringReader類型  630
20.11  使用BinaryWriter和BinaryReader  631
20.12  以編程方式“觀察”文件  632
20.13  對象序列化  634
20.14  為序列化配置對象  637
20.14.1  定義可序列化的類型  637
20.14.2  公共字段、私有字段和公共屬性  638
20.15  選擇序列化格式化程序  638
20.15.1  IFormatter和IRemoting-Formatting接口  639
20.15.2  在格式化程序中的類型保真  640
20.16  使用BinaryFormatter序列化對象  641
20.17  使用SoapFormatter序列化對象  642
20.18  使用XmlSerializer序列化對象  643
20.19  序列化對象集閤  645
20.20  自定義Soap/Binary序列化過程  647
20.20.1  深入瞭解對象序列化  647
20.20.2  使用ISerializable自定義序列化  648
20.20.3  使用特性定製序列化  650
20.21  小結  651
第21章 ADO.NET之一:連接層  653
21.1  ADO.NET的宏觀定義  653
21.2  ADO.NET數據提供程序  655
21.2.1  微軟提供的ADO.NET數據提供程序  656
21.2.2  關於System.Data.Oracle-Client.dll  657
21.2.3  選擇第三方的數據提供程序  657
21.3  其他的ADO.NET命名空間  658
21.4  System.Data命名空間的類型  658
21.4.1  IDbConnection接口的作用  659
21.4.2  IDbTransaction接口的作用  659
21.4.3  IDbCommand接口的作用  660
21.4.4  IDbDataParameter和IDataParameter接口的作用  660
21.4.5  IDbDataAdapter和IDataAdapter接口的作用  661
21.4.6  IDataReader和IDataRecord接口的作用  661
21.5  使用接口的抽象數據提供程序  662
21.6  創建AutoLot數據庫  665
21.6.1  創建Inventory錶  665
21.6.2  為Inventory錶添加測試記錄  667
21.6.3  編寫GetPetName()存儲過程  668
21.6.4  創建Customers和Orders錶  669
21.6.5  可視化創建錶關係  671
21.7  ADO.NET數據提供程序工廠模型  672
21.7.1  完整的數據提供程序工廠的例子  673
21.7.2  數據提供程序工廠模型的潛在缺陷  675
21.7.3  <connectionStrings>元素  676
21.8  ADO.NET的連接層  677
21.8.1  使用連接對象  678
21.8.2  使用ConnectionStringBuilder對象  679
21.8.3  使用命令對象  680
21.9  使用數據讀取器  681
21.10  構建可重用的數據訪問庫  683
21.10.1  增加連接邏輯  684
21.10.2  增加插入邏輯  685
21.10.3  增加刪除邏輯  686
21.10.4  增加更新邏輯  686
21.10.5  增加選擇邏輯  687
21.10.6  使用參數化的命令對象  688
21.10.7  執行存儲過程  690
21.11  創建控製颱UI前端  691
21.11.1  實現Main()方法  691
21.11.2  實現ShowInstructions()方法  693
21.11.3  實現ListInventory()方法  693
21.11.4  實現DeleteCar()方法  694
21.11.5  實現InsertNewCar()方法  694
21.11.6  實現UpdateCarPetName()方法  695
21.11.7  實現LookUpPetName()  696
21.12  數據庫事務  697
21.12.1  ADO.NET事務對象的主要成員  697
21.12.2  為AutoLot數據庫添加CreditRisks錶  698
21.12.3  為InventoryDAL添加事物方法  699
21.12.4  測試數據庫事務  700
21.13  小結  701
第22章 ADO.NET之二:斷開連接層  702
22.1  ADO.NET斷開連接層  702
22.2  DataSet的作用  703
22.2.1  DataSet的主要屬性  704
22.2.2  DataSet的主要方法  704
22.2.3  構建DataSet  705
22.3  使用DataColumn  705
22.3.1  構建DataColumn  706
22.3.2  啓用自增列  707
22.3.3  把DataColumn對象加入DataTable  707
22.4  使用DataRow  707
22.4.1  RowState屬性  709
22.4.2  DataRowVersion屬性  710
22.5  使用DataTable  710
22.5.1  將DataTable插入到DataSet中  711
22.5.2  獲取DataSet中的數據  712
22.5.3  使用DataTableReader對象處理DataTable  713
22.5.4  序列化DataTable/DataSet對象為XML  714
22.5.5  以二進製格式序列化Data-Table/DataSet對象  715
22.6  將DataTable對象綁定到用戶界麵  716
22.6.1  從泛型List<T>閤成DataTable  717
22.6.2  從DataTable中刪除行  719
22.6.3  根據篩選條件選擇行  720
22.6.4  在DataTable中更新行  722
22.6.5  使用DataView類型  723
22.7  使用數據適配器  724
22.7.1  一個簡單的數據適配器示例  725
22.7.2  映射數據庫名稱為友好名稱  726
22.8  嚮AutoLotDAL.dll添加斷開連接功能  727
22.8.1  定義初始類類型  727
22.8.2  使用SqlCommandBuilder來配置數據適配器  728
22.8.3  實現GetAllInventory()  729
22.8.4  實現UpdateInventory()  729
22.8.5  設置版本號  729
22.8.6  測試非連接的功能  730
22.9  多錶DataSet對象和數據關係  731
22.9.1  建立數據適配器  732
22.9.2  建立錶間關係  733
22.9.3  更新Database錶  733
22.9.4  在關聯錶中切換  734
22.10  Windows Forms數據庫設計器工具  736
22.10.1  可視化設計DataGridView  736
22.10.2  生成的App.config文件  740
22.10.3  強類型的DataSet  740
22.10.4  強類型的DataTable  741
22.10.5  強類型的DataRow  742
22.10.6  強類型的數據適配器  743
22.10.7  完成Windows Forms應用程序  744
22.11  將強類型的數據庫代碼隔離到類庫中  744
22.11.1  查看生成的代碼  746
22.11.2  用生成的代碼選擇數據  747
22.11.3  用生成的代碼插入數據  748
22.11.4  用生成的代碼刪除數據  748
22.11.5  用生成的代碼調用存儲過程  749
22.12  LINQ to DataSet  750
22.12.1  DataSet Extensions庫的作用  751
22.12.2  獲取與LINQ兼容的DataTable  752
22.12.3  DataRowExtensions.Field-<T>()擴展方法的作用  753
22.12.4  從LINQ查詢中生成新的DataTable  754
22.13  小結  754
第23章 ADO.NET之三:Entity Framework  756
23.1  Entity Framework的作用  756
23.1.1  實體的作用  758
23.1.2  Entity Framework的基礎知識  760
23.2  創建和分析EDM  764
23.3  對概念模型進行編程  774
23.4  AutoLotDAL 4.0版,加入實體  779
23.4.1  導航屬性的作用  780
23.4.2  在LINQ to Entity查詢中使用導航屬性  781
23.4.3  調用存儲過程  782
23.5  將數據實體綁定到Windows Forms GUI  783
23.6  展望.NET數據訪問API的未來  786
23.7  小結  787
第24章 LINQ to XML簡介  788
24.1  兩個XML API的故事  788
24.1.1  更優秀的DOM——LINQ to XML  789
24.1.2  更優秀的LINQ to XML——VB字麵量語法  790
24.2  System.Xml.Linq命名空間的成員  791
24.2.1  LINQ to XML的軸方法  793
24.2.2  奇妙的XName和XNamespace  794
24.3  使用XElement和XDocument  795
24.3.1  從數組和容器中生成文檔  797
24.3.2  加載和解析XML內容  798
24.4  在內存中操作XML文檔  798
24.4.1  構建LINQ to XML應用程序的UI  799
24.4.2  引入Inventory.xml文件  799
24.4.3  定義LINQ to XML輔助類  800
24.4.4  將UI組裝到輔助類  801
24.5  小結  802
第25章 WCF  803
25.1  各種分布式計算API  803
25.1.1  DCOM的作用  804
25.1.2  COM+/企業服務的作用  804
25.1.3  MSMQ的作用  805
25.1.4  .NET Remoting的作用  805
25.1.5  XML Web服務的作用  806
25.2  WCF的作用  807
25.2.1  WCF特性概覽  807
25.2.2  SOA概覽  808
25.2.3  WCF概要  809
25.3  WCF核心程序集  809
25.4  Visual Studio WCF項目模闆  810
25.5  WCF應用程序的基本構成  811
25.6  WCF的ABC  812
25.6.1  WCF契約  813
25.6.2  WCF綁定  814
25.6.3  WCF地址  816
25.7  構建WCF服務  816
25.7.1  [ServiceContract]特性  818
25.7.2  [OperationContract]特性  819
25.7.3  作為操作契約的服務類型  819
25.8  承載WCF服務  820
25.8.1  在App.config文件中創建
ABC  820
25.8.2  針對ServiceHost類型進行編程  821
25.8.3  指定庫地址  821
25.8.4  ServiceHost類型的功能  823
25.8.5  <system.serviceModel>元素的細節  824
25.8.6  啓用元數據交換  825
25.9  構建WCF客戶端應用程序  827
25.9.1  使用svcutil.exe生成代理代碼  827
25.9.2  使用Visual Studio生成代理代碼  828
25.9.3  配置基於TCP的綁定  830
25.10  簡化配置設置  831
25.10.1  使用默認終結點  831
25.10.2  使用多重綁定公開單獨的WCF服務  832
25.10.3  修改WCF綁定的設置  833
25.10.4  使用默認的MEX行為配置  835
25.10.5  刷新客戶端代理和選擇綁定  836
25.11  使用WCF服務庫項目模闆  837
25.11.1  構建簡單的Math服務  837
25.11.2  使用WcfTestClient.exe測試WCF服務  838
25.11.3  使用SvcConfigEditor.exe修改配置文件  839
25.12  以Windows服務承載WCF服務  840
25.12.1  在代碼中指定ABC  841
25.12.2  啓用MEX  843
25.12.3  創建Windows服務安裝程序  843
25.12.4  安裝Windows服務  845
25.13  從客戶端異步調用服務  845
25.14  定義WCF數據契約  847
25.14.1  使用Web相關的WCF服務項目模闆  848
25.14.2  實現服務契約  849
25.14.3  *.svc文件的作用  851
25.14.4  更新web.config文件  851
25.14.5  測試服務  851
25.15  小結  852
第26章 Windows Workflow Foundation簡介  853
26.1  定義業務流程  853
26.2  構建簡單的工作流  854
26.3  Workflow運行時  857
26.3.1  使用WorkflowInvoker承載工作流  857
26.3.2  使用WorkflowApplication承載工作流  860
26.3.3  第一個工作流示例迴顧  861
26.4  檢查Workflow中的活動  861
26.4.1  控製流活動  861
26.4.2  流程圖活動  862
26.4.3  消息傳遞活動  862
26.4.4  狀態機活動  863
26.4.5  運行時活動與基元活動  863
26.4.6  事務活動  863
26.4.7  集閤活動和錯誤處理活動  864
26.5  構建流程圖工作流  864
26.5.1  在流程圖中連接活動  865
26.5.2  使用InvokeMethod活動  866
26.5.3  定義工作流變量  867
26.5.4  使用FlowDecision活動  868
26.5.5  使用TerminateWorkflow活動  868
26.5.6  構建“true”條件  869
26.5.7  使用ForEach<T>活動  870
26.5.8  完成應用程序  872
26.5.9  我們做瞭什麼  873
26.6  在專門的DLL中構建Squence工作流  874
26.6.1  定義初始化項目  874
26.6.2  引入程序集和命名空間  876
26.6.3  定義工作流參數  877
26.6.4  定義工作流變量  877
26.6.5  使用Assign活動  878
26.6.6  使用If和Switch活動  879
26.6.7  構建自定義代碼活動  882
26.7  使用工作流庫  884
26.8  小結  886
第七部分 WPF
第27章 WPF和XAML  888
27.1  WPF背後的動機  888
27.1.1  統一多種不同的API  889
27.1.2  通過XAML將關注點分離  889
27.1.3  提供優化的呈現模型  890
27.1.4  簡化復雜的UI編程  890
27.2  各種形式的WPF應用程序  891
27.2.1  傳統的桌麵應用程序  891
27.2.2  基於導航的WPF應用程序  892
27.2.3  XBAP應用程序  893
27.2.4  WPF/Silverlight關係  894
27.3  WPF程序集  894
27.3.1  Application類的作用  896
27.3.2  Window類的作用  897
27.4  創建不使用XAML的WPF應用程序  900
27.4.1  創建強類型的Window類  902
27.4.2  創建簡單的用戶界麵  902
27.4.3  與應用程序級彆的數據交互  904
27.4.4  處理Window對象的關閉  905
27.4.5  攔截鼠標事件  906
27.4.6  攔截鍵盤事件  907
27.5  僅使用XAML構建WPF應用程序  908
27.5.1  用XAML定義窗體對象  909
27.5.2  用XAML定義應用對象  910
27.5.3  通過msbuild.exe處理XAML文件  911
27.6  將標記轉換為.NET程序集  913
27.6.1  將窗口XAML標記映射到C#代碼  913
27.6.2  BAML的作用  914
27.6.3  將應用程序XAML標記映射到C#代碼  915
27.6.4  XAML到程序集的過程摘要  916
27.7  WPF XAML語法  916
27.7.1  Kaxaml  917
27.7.2  XAML XML命名空間和XAML關鍵字  918
27.7.3  控製類和成員變量的可見性  920
27.7.4  XAML元素、XAML特性和類型轉換器  920
27.7.5  XAML屬性元素語法  921
27.7.6  XAML附加屬性  922
27.7.7  XAML標記擴展  923
27.8  使用代碼隱藏文件構建WPF應用程序  924
27.8.1  為MainWindow類添加代碼文件  925
27.8.2  為MyApp類添加代碼文件  925
27.8.3  用msbuild.exe處理代碼文件  926
27.9  使用Visual Studio構建WPF應用程序  927
27.9.1  WPF項目模闆  927
27.9.2  工具箱和XAML設計器/編輯器  928
27.9.3  使用Properties窗口設置屬性  929
27.9.4  使用Properties窗口處理事件  930
27.9.5  在XAML編輯器中處理事件  931
27.9.6  Document Outline窗口  932
27.9.7  查看自動生成的代碼文件  933
27.10  使用Visual Studio構建自定義XAML編輯器  933
27.10.1  設計窗口的GUI  934
27.10.2  實現Loaded事件  935
27.10.3  實現按鈕的Click事件  936
27.10.4  實現Closed事件  937
27.10.5  測試應用程序  937
27.10.6  探索WPF 文檔  938
27.11  小結  939
第28章 使用WPF控件編程  941
28.1  WPF核心控件概述  941
28.1.1  WPF Ink控件  942
28.1.2  WPF Document控件  942
28.1.3  WPF公共對話框  942
28.1.4  文檔中的細節  943
28.2  Visual Studio WPF設計器  944
28.2.1  在Visual Studio中使用WPF控件  944
28.2.2  使用Document Outline編輯器  945
28.3  使用麵闆控製內容布局  946
28.3.1  在Canvas麵闆中放置內容  948
28.3.2  在WrapPanel麵闆中放置內容  949
28.3.3  在StackPanel麵闆中放置內容  951
28.3.4  在Grid麵闆中放置內容  952
28.3.5  在DockPanel麵闆中放置內容  954
28.3.6  啓用Panel類型的滾動功能  955
28.3.7  使用Visual Studio設計器配置Panel  956
28.4  使用嵌套麵闆構建窗口框架  959
28.4.1  構建菜單係統  960
28.4.2  構建工具條  962
28.4.3  構建狀態條  963
28.4.4  完成UI設計  963
28.4.5  實現MouseEnter/MouseLeave事件處理程序  964
28.4.6  實現拼寫檢查邏輯  964
28.5  WPF命令  965
28.5.1  內置的命令對象  965
28.5.2  將命令連接到Command屬性  966
28.5.3  將命令連接到任意行為  967
28.5.4  使用Open和Save命令  968
28.6  深入瞭解WPF API和控件  970
28.7  構建Ink API選項卡  972
28.7.1  設計工具條  973
28.7.2  RadioButton控件  975
28.7.3  處理Ink API選項卡的事件  977
28.7.4  InkCanvas控件  977
28.7.5  ComboBox控件  980
28.7.6  保存、加載和清除InkCanvas數據  981
28.8  Documents API  982
28.8.1  塊元素和內聯元素  982
28.8.2  文檔布局管理器  982
28.9  構建Documents選項卡  983
28.9.1  使用代碼填充FlowDocument  984
28.9.2  啓用批注和便簽  985
28.9.3  保存和加載流文檔  986
28.10  WPF數據綁定模型  987
28.10.1  構建Data Binding選項卡  988
28.10.2  使用Visual Studio建立數據綁定  988
28.10.3  DataContext屬性  990
28.10.4  使用IValueConverter進行數據轉換  991
28.10.5  在代碼中建立數據綁定  992
28.10.6  構建DataGrid選項卡  992
28.11  小結  994
第29章 WPF圖形呈現服務  995
29.1  理解WPF的圖形呈現服務  995
29.2  使用形狀呈現圖形數據  996
29.2.1  在畫布中添加矩形、橢圓形和綫條  998
29.2.2  在畫布中移除矩形、圓形和綫條  1001
29.2.3  摺綫和多邊形  1002
29.2.4  路徑  1002
29.3  WPF畫刷和畫筆  1005
29.3.1  使用Visual Studio配置畫刷  1006
29.3.2  在代碼中配置畫刷  1008
29.3.3  配置畫筆  1009
29.4  圖形變換  1009
29.4.1  變換概覽  1010
29.4.2  變換Canvas數據  1011
29.5  使用Visual Studio變換編輯器  1012
29.5.1  構建初始布局  1012
29.5.2  在設計時應用變換  1014
29.5.3  在代碼中變換畫布  1015
29.6  使用繪圖和幾何圖形呈現圖形數據  1015
29.6.1  使用幾何圖形構建DrawingBrush  1017
29.6.2  用DrawingBrush進行繪畫  1017
29.6.3  在DrawingImage中使用繪圖類型  1018
29.7  Expression Design的作用  1019
29.7.1  將示例設計文件導齣為XAML  1019
29.7.2  將圖像數據導入WPF對象  1021
29.7.3  與熊共舞  1022
29.8  使用可視化層呈現圖形數據  1022
29.9  小結  1028
第30章 WPF資源、動畫和樣式  1029
30.1  理解WPF資源係統  1029
30.2  使用對象(邏輯)資源  1034
30.2.1  Resources屬性的作用  1034
30.2.2  定義窗口級彆的資源  1035
30.2.3  {StaticResource}標記擴展  1037
30.2.4  {DynamicResource}標記擴展  1037
30.2.5  應用程序級彆的資源  1038
30.2.6  定義閤並的資源字典  1039
30.2.7  定義隻含資源的程序集  1041
30.3  理解WPF動畫服務  1042
30.3.1  動畫類型的作用  1043
30.3.2  To、From和By屬性  1043
30.3.3  Timeline基類的作用  1044
30.3.4  用C#代碼創建動畫  1044
30.3.5  控製動畫的速度  1045
30.3.6  動畫的反轉和循環  1046
30.4  用XAML創建動畫  1047
30.4.1  演示圖闆的作用  1047
30.4.2  事件觸發器的作用  1048
30.4.3  使用不連續的關鍵幀創建動畫  1048
30.5  WPF樣式的作用  1049
30.5.1  定義並使用樣式  1050
30.5.2  重寫樣式設置  1050
30.5.3  使用TargetType自動應用樣式  1051
30.5.4  繼承已有的樣式  1052
30.5.5  未命名樣式的作用  1052
30.5.6  使用觸發器定義樣式  1053
30.5.7  使用多個觸發器定義樣式  1053
30.5.8  動畫樣式  1054
30.5.9  以編程方式設置樣式  1054
30.6  小結  1056
第31章 依賴屬性、路由事件和模闆  1057
31.1  依賴屬性的作用  1057
31.1.1  已知的依賴屬性  1059
31.1.2  CLR屬性包裝器的重要說明  1061
31.2  構建自定義依賴屬性  1061
31.2.1  添加數據驗證例程  1065
31.2.2  響應屬性的改變  1065
31.3  路由事件  1066
31.3.1  路由冒泡事件的作用  1067
31.3.2  繼續或中止冒泡  1068
31.3.3  路由隧道事件的作用  1068
31.4  邏輯樹、可視樹和默認模闆  1070
31.4.1  以編程方式查看邏輯樹  1070
31.4.2  以編程方式查看可視樹  1072
31.4.3  以編程方式查看控件的默認模闆  1073
31.5  使用觸發器框架構建自定義控件模闆  1075
31.5.1  模闆資源  1076
31.5.2  使用觸發器添加可視提示  1078
31.5.3  {TemplateBinding}標記擴展的作用  1079
31.5.4  ContentPresenter的作用  1080
31.5.5  融閤模闆和樣式  1081
31.6  小結  1082
第八部分 ASP.NET Web Form
第32章  ASP.NET Web Form   1084
32.1  HTTP的作用  1084
32.1.1  HTTP請求/響應循環  1084
32.1.2  HTTP是無狀態協議  1085
32.2  Web應用程序和Web服務器  1085
32.2.1  IIS虛擬目錄的作用  1085
32.2.2  ASP.NET Development Web Server  1086
32.3  HTML的作用  1087
32.3.1  HTML文檔結構  1087
32.3.2  HTML錶單的作用  1088
32.3.3  Visual Studio HTML設計器工具  1088
32.3.4  構建HTML錶單  1090
32.4  客戶端腳本的作用  1091
32.5  迴發到Web服務器  1093
32.6  ASP.NET API概覽  1094
32.6.1  ASP.NET 2.0及其後續版本的主要特性  1095
32.6.2  ASP.NET 3.5(和.NET 3.5 SP1)的主要特性  1096
32.6.3  ASP.NET 4.0和4.5的主要特性  1096
32.7  構建單個文件的ASP.NET網頁  1097
32.7.1  引用AutoLotDAL.dll  1098
32.7.2  設計UI  1098
32.7.3  添加數據訪問邏輯  1099
32.7.4  ASP.NET指令的作用  1101
32.7.5  腳本塊  1102
32.7.6  ASP.NET控件聲明  1103
32.8  使用代碼文件構建ASP.NET Web頁麵  1104
32.8.1  引用AutoLotDAL.dll程序集  1106
32.8.2  更新代碼文件  1107
32.8.3  調試並跟蹤ASP.NET頁麵  1107
32.9  ASP.NET Web Site和ASP.NET Web Application  1108
32.10  ASP.NET網站目錄結構  1110
32.10.1  引用程序集  1110
32.10.2  App_Code文件夾的作用  1111
32.11  頁麵類型的繼承鏈  1111
32.12  與傳入的HTTP請求交互  1113
32.12.1  獲得瀏覽器統計數據  1113
32.12.2  訪問傳入的錶單數據  1114
32.12.3  IsPostBack屬性  1115
32.13  與輸齣HTTP響應交互  1115
32.13.1  提交HTML內容  1116
32.13.2  重定嚮用戶  1116
32.14  ASP.NET網頁的生命周期  1117
32.14.1  AutoEventWireUp特性的作用  1118
32.14.2  Error事件  1118
32.15  web.config文件的作用  1120
32.16  小結  1121
第33章  ASP.NET Web控件、母版頁和主題  1122
33.1  Web控件的本質  1122
33.1.1  服務器端事件處理  1123
33.1.2  AutoPostBack屬性  1123
33.2  Control和WebControl基類  1124
33.2.1  枚舉所包含的控件  1125
33.2.2  動態添加和刪除控件  1127
33.2.3  與動態創建的控件交互  1128
33.2.4  WebControl基類的功能  1128
33.3  ASP.NET Web控件的類彆  1129
33.3.1  關於System.Web.UI.HtmlControls的簡短說明  1131
33.3.2  Web控件的文檔  1132
33.4  構建ASP.NET汽車網站  1132
33.4.1  使用ASP.NET母版頁工作  1133
33.4.2  定義默認的內容頁麵  1138
33.4.3  設計Inventory內容頁麵  1140
33.4.4  設計Build-a-Car內容頁麵  1143
33.5  驗證控件的作用  1146
33.5.1  開啓客戶端JavaScript驗證支持  1147
33.5.2  RequiredFieldValidator  1148
33.5.3  RegularExpressionValidator  1148
33.5.4  RangeValidator  1148
33.5.5  CompareValidator  1149
33.5.6  創建ValidationSummary  1150
33.5.7  定義驗證分組  1151
33.6  使用主題  1152
33.6.1  *.skin文件  1153
33.6.2  應用網站級彆的主題  1155
33.6.3  在頁麵級彆應用主題  1155
33.6.4  SkinID屬性  1155
33.6.5  以編程方式分配主題  1156
33.7  小結  1157
第34章 ASP.NET狀態管理技術  1158
34.1  狀態問題  1158
34.2  ASP.NET狀態管理技術  1160
34.3  ASP.NET視圖狀態的作用  1160
34.3.1  演示視圖狀態  1161
34.3.2  添加自定義視圖狀態數據  1162
34.4  Global.asax文件的作用  1163
34.4.1  全局最後異常事件處理程序  1164
34.4.2  HttpApplication基類  1165
34.5  應用程序狀態與會話狀態的差彆  1165
34.5.1  維護應用程序級的狀態數據  1166
34.5.2  修改應用程序數據  1168
34.5.3  處理Web應用程序的關閉  1169
34.6  使用應用程序緩存  1169
34.6.1  使用數據緩存  1170
34.6.2  修改*.aspx文件  1172
34.7  維護會話數據  1174
34.8  cookie  1177
34.8.1  創建cookie  1177
34.8.2  讀取傳入的cookie數據  1178
34.9  <sessionState>元素的作用  1179
34.9.1  在ASP.NET會話狀態服務器中保存會話數據  1179
34.9.2  把會話數據保存在專門的數據庫中  1180
34.10  ASP.NET用戶配置API  1181
34.10.1  ASPNETDB.mdf數據庫  1181
34.10.2  在web.config中定義用戶配置  1182
34.10.3  以編程方式訪問用戶配置數據  1183
34.10.4  分組用戶配置數據並且持久化自定義對象  1185
34.11  小結  1186
索引  1187
· · · · · · (收起)

讀後感

評分

很不错的一本书,对初学者来很有意义,虽说部分内容有点不好理解,但是不理解的可以先跳过去啦,慢慢看,收获一定不会少的~  

評分

★ C# and the .NET Platform (June 20, 2001) ★ C# and the .NET Platform, 2nd Edition (June 5, 2003) ★ Pro C# 2005 and the .NET 2.0 Platform, 3rd Edition (September 14, 2005) ★ Pro C# with .NET 3.0, Special Edition (February 5, 2007) -- C#与.NET 3.0高级...  

評分

详略得当 .NET 3.0-4.0带来的全新组件几乎全部都有讲解 不愧为“.net圣经” 推荐新手可以从后往前读 WPF WCF WF ADO.NET和EF的内容 这样可以增进阅读趣味 开发人员可以精读有关GC/并发/LINQ/IL方面的内容,查缺补漏  

評分

个人感觉C#4.0的新功能都介绍到了,甚至包括C#3.5,C#3.0中一些被遗忘的,平时不太用的功能都有写。 希望把项目从VS2008升级到VS2010的同学必读此书,唯一的遗憾就是书太厚,有很多内容第4版已经介绍过了。  

評分

这本书是本人学习C#与.NET编程开发的必备参考书。通过它可以迅速提高。这本书较厚,C# 2005 和 .NET 3.0 的内容全部覆盖并都有实例讲解。给本人印象较深的是IL方面的知识内容,这是.NET系开发工程师通往高级软工所必须掌握的技能之一!      在这里,本人推荐款很好...  

用戶評價

评分

非常好的 C# 書籍,本書內容既有深度、又兼具廣度。內容可給五星。 更難能可貴的是,這本書的翻譯也很不錯。在我的印象中,這種大部頭的書籍很多翻譯都很渣,這本翻譯可拿3.5星。 至於另一本業內久負盛名的《C#高級編程》,翻譯隻能吃我負分評價。

评分

良心之作

评分

很好

评分

已入手,準備開看。

评分

良心之作

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有