第1 章 C#和NET 框架  1
         1.1 在NET 之前  1
         1.1.1 20 世紀90 年代後期的Windows 編程   1
         1.1.2  下一代平颱服務的目標   2
         1.2  進入Microsoft NET   2
         1.2.1 NET 框架的組成  2
         1.2.2 大大改進的編程環境   3
         1.3  編譯成CIL  5
         1.4  編譯成本機代碼並執行  5
         1.5  CLR  6
         1.6  CLI   7
         1.7  縮寫迴顧   8
         第2章 C#編程概述  9
         2.1  一個簡單的C#程序   9
         2.2  標識符和關鍵字  11
         2.2.1  命名約定  11
         2.2.2  關鍵字  12
         2.3  Main:程序的起始點  12
         2.4  空白  13
         2.5  語句  13
         2.5.1  簡單語句  13
         2.5.2  塊  14
         2.6  從程序中輸齣文本   14
         2.6.1  Write   14
         2.6.2  WriteLine    15
         2.6.3  格式字符串    15
         2.6.4  多重標記和值    16
         2.7  注釋   16
         2.7.1  關於注釋的補充   17
         2.7.2  文檔注釋  17
         2.7.3  注釋類型總結   18
         第3 章  類型、存儲和變量    19
         3.1  C#程序是一組類型聲明    19
         3.2  類型是一種模闆  20
         3.3  實例化類型  20
         3.4  數據成員和函數成員    21
         3.5  預定義類型   21
         3.6  用戶定義類型  23
         3.7  棧和堆  24
         3.7.1  棧  24
         3.7.2  堆  25
         3.8  值類型和引用類型   25
         3.8.1  存儲引用類型對象的成員   26
         3.8.2  C#類型的分類   27
         3.9  變量   27
         3.9.1  變量聲明  27
         3.9.2  多重變量聲明   29
         3.9.3  使用變量的值   29
         3.10  靜態類型和dynamic 關鍵字   29
         3.11  可空類型  30
         3.11.1  創建可空類型   30
         3.11.2  為可空類型賦值   31
         第4 章  類:基礎   32
         4.1  類的概述   32
         4.2  程序和類:一個快速的示例   33
         4.3  聲明類   33
         4.4  類成員   34
         4.4.1  字段   34
         4.4.2  顯式和隱式字段初始化   35
         4.4.3  聲明多個字段   36
         4.4.4  方法   36
         4.5  創建變量和類的實例   37
         4.6  為數據分配內存  37
         4.7  實例成員   38
         4.8  訪問修飾符   39
         4.9  從類的內部訪問成員    41
         4.10  從類的外部訪問成員   42
         4.11  綜閤應用   43
         第5 章  方法   45
         5.1  方法的結構   45
         5.2  本地變量   47
         5.2.1  類型推斷和var 關鍵字   47
         5.2.2  嵌套塊中的本地變量   48
         5.3  本地常量   49
         5.4  方法調用   51
         5.5  返迴值   52
         5.6  參數   54
         5.6.1  形參  54
         5.6.2  實參  55
         5.6.3  帶位置輸入參數的方法示例   55
         5.7  值參數   56
         5.8  引用參數   58
         5.9  輸齣參數   60
         5.10  參數數組   62
         5.10.1  方法調用    63
         5.10.2  數組作實參    65
         5.11  參數類型總結  66
         5.12  方法重載  66
         5.13  命名參數  67
         5.14  可選參數  68
         5.15  棧幀  71
         5.16  遞歸  72
         第6 章  類進階  74
         6.1  類成員  74
         6.2  實例類成員  76
         6.3  靜態字段  76
         6.4  從類的外部訪問靜態成員   77
         6.4.1  靜態字段示例   77
         6.4.2  靜態成員的生存期   78
         6.5  靜態函數成員  79
         6.6  其他靜態類成員類型   80
         6.7  成員常量   80
         6.8  屬性   82
         6.8.1  屬性聲明和訪問器   83
         6.8.2  屬性示例  83
         6.8.3  使用屬性  84
         6.8.4  屬性和關聯字段    85
         6.8.5  執行其他計算    86
         6.8.6  隻讀和隻寫屬性    87
         6.8.7  計算隻讀屬性示例   87
         6.8.8  屬性和數據庫示例   88
         6.8.9  屬性vs公共字段   88
         6.8.10  自動實現屬性   89
         6.8.11  靜態屬性   89
         6.9  實例構造函數  90
         6.9.1  帶參數的構造函數   91
         6.9.2  默認構造函數  92
         6.10  靜態構造函數  93
         6.10.1  靜態構造函數示例  93
         6.10.2  構造函數的可訪問性  94
         6.11  對象初始化列錶  94
         6.12  析構函數  95
         6.12.1  調用析構函數  96
         6.12.2  標準清理模式  98
         6.13  比較構造函數和析構函數   99
         6.14  readonly 修飾符  99
         6.15  this 關鍵字  100
         6.16  索引  101
         6.16.1  什麼是索引   102
         6.16.2  索引和屬性  102
         6.16.3  聲明索引    103
         6.16.4  索引的set 訪問器   104
         6.16.5  索引的get 訪問器   104
         6.16.6  關於索引的補充   105
         6.16.7  為Employee 示例聲明索引   105
         6.16.8  另一個索引示例   106
         6.16.9  索引重載   107
         6.17  訪問器的訪問修飾符   107
         6.18  分部類和分部類型   109
         第7 章  類和繼承   12
         7.1  類繼承  112
         7.2  訪問繼承的成員   113
         7.3  隱藏基類的成員   115
         7.4  基類訪問  116
         7.5  使用基類的引用   117
         7.5.1  虛方法和覆寫方法   119
         7.5.2  覆寫標記為override 的方法  120
         7.5.3  覆蓋其他成員類型   123
         7.6  構造函數的執行   124
         7.6.1  構造函數初始化語句   125
         7.6.2  類訪問修飾符   127
         7.7  程序集間的繼承    128
         7.8  成員訪問修飾符    129
         7.8.1  訪問成員的區域    130
         7.8.2  公有成員的可訪問性   131
         7.8.3  私有成員的可訪問性   131
         7.8.4  受保護成員的可訪問性   132
         7.8.5  內部成員的可訪問性   132
         7.8.6  受保護內部成員的可訪問性   132
         7.8.7  成員訪問修飾符的總結   133
         7.9  抽象成員  133
         7.10  抽象類  134
         7.10.1  抽象類和抽象方法的示例   135
         7.10.2  抽象類的另一個例子   136
         7.11  密封類  137
         7.12  靜態類  137
         7.13  擴展方法  138
         第8 章  錶達式和運算符   142
         8.1  錶達式   142
         8.2  字麵量   143
         8.3  整數字麵量   144
         8.4  字符字麵量   145
         8.5  字符串字麵量   146
         8.6  求值順序  147
         8.6.1  優先級  148
         8.6.2  結閤性  148
         8.7  簡單算術運算符   149
         8.8  求餘運算符  149
         8.9  關係比較運算符和相等比較運算符   150
         8.10  遞增運算符和遞減運算符   152
         8.11  條件邏輯運算符   153
         8.12  邏輯運算符  154
         8.13  移位運算符  155
         8.14  賦值運算符  157
         8.15  條件運算符  158
         8.16  一元算術運算符   159
         8.17  用戶定義類型轉換   160
         8.18  運算符重載  162
         8.18.1  運算符重載的限製   163
         8.18.2  運算符重載的示例   164
         8.19  typeof 運算符   165
         8.20  其他運算符  166
         第9 章  語句   167
         9.1  什麼是語句  167
         9.2  錶達式語句  168
         9.3  控製流語句  169
         9.4  if 語句   169
         9.5  if…else 語句  170
         9.6  switch 語句  171
         9.6.1  分支示例   172
         9.6.2  switch 語句的補充   173
         9.6.3  switch 標簽   174
         9.7  while 循環  174
         9.8  do 循環  175
         9.9  for 循環  176
         9.9.1  for 語句中變量的有效範圍   177
         9.9.2  初始化語句和迭代錶達式中的多錶達式   178
         9.10  跳轉語句   178
         9.11  break 語句   178
         9.12  continue 語句   179
         9.13 標簽語句  180
         9.13.1  標簽  180
         9.13.2  標簽語句的範圍   180
         9.14  goto 語句  181
         9.15  using 語句  182
         9.15.1  資源的包裝使用   183
         9.15.2  using 語句的示例   183
         9.15.3  多個資源和嵌套   184
         9.15.4  using 語句的另一種形式   185
         9.16  其他語句  186
         第10 章  命名空間和程序集   187
         10.1  引用其他程序集    187
         10.2  命名空間   191
         10.2.1  命名空間名稱   194
         10.2.2  命名空間的補充   194
         10.2.3  命名空間跨文件伸展   195
         10.2.4  嵌套命名空間   195
         10.3  using 指令  196
         10.31  using 命名空間指令   196
         10.32  using 彆名指令   197
         10.4  程序集的結構  198
         10.5  程序集標識符  199
         10.6  強命名程序集  200
         10.7  程序集的私有方式部署   201
         10.8  共享程序集和GAC    201
         10.8.1  把程序集安裝到GAC   201
         10.8.2  GAC 內的並肩執行   202
         10.9  配置文件  203
         10.10  延遲簽名  203
         第11 章  異常  205
         11.1  什麼是異常  205
         11.2  try 語句   206
         11.3  異常類  207
         11.4  catch 子句  207
         11.4.1  使用特定catch 子句的示例  208
         11.4.2  catch 子句段   209
         11.5  finally 塊  210
         11.6   為異常尋找處理代碼    211
         11.7  更進一步搜索  211
         11.7.1  一般法則    212
         11.7.2  搜索調用棧的示例  213
         11.8   拋齣異常   214
         11.9   不帶異常對象的拋齣   215
         第12 章  結構   217
         12.1  什麼是結構  217
         12.2  結構是值類型  218
         12.3  對結構賦值  219
         12.4  構造函數和析構函數    220
         12.4.1  實例構造函數   220
         12.4.2  靜態構造函數   221
         12.4.3  構造函數和析構函數的總結  221
         12.5  字段初始化是不允許的   222
         12.6  結構是密封的  222
         12.7  裝箱和取消裝箱     222
         12.8  結構作為返迴值和參數   222
         12.9  關於結構的附加信息   222
         第13 章  枚舉   224
         13.1  枚舉   224
         13.11  設置底層類型和顯式值   225
         13.12  隱式成員編號   226
         13.2  位標誌   227
         13.21  Flags 特性   229
         13.22  使用位標誌的示例   230
         13.3  關於枚舉的補充   231
         第14 章  數組  233
         14.1   數組  233
         14.1.1  定義  233
         14.1.2  重要細節   234
         14.2  數組的類型  234
         14.3  數組是對象  235
         14.4  一維數組和矩形數組   236
         14.5  實例化一維數組或矩形數組   236
         14.6  訪問數組元素  237
         14.7  初始化數組  238
         14.7.1  顯式初始化一維數組  238
         14.7.2  顯式初始化矩形數組   239
         14.7.3  初始化矩形數組的語法點  239
         14.7.4  快捷語法   240
         14.7.5  隱式類型數組   240
         14.7.6  綜閤內容    241
         14.8  交錯數組   241
         14.8.1  聲明交錯數組   242
         14.8.2  快捷實例化    242
         14.8.3  實例化交錯數組   242
         14.8.4  交錯數組中的子數組   243
         14.9  比較矩形數組和交錯數組   244
         14.10  foreach 語句   245
         14.10.1  迭代變量是隻讀的   246
         14.10.2  foreach 語句和多維數組   247
         14.11  數組協變  248
         14.12  數組繼承的有用成員   249
         14.13  比較數組類型    252
         第15 章  委托  253
         15.1   什麼是委托  253
         15.2  聲明委托類型  255
         15.3  創建委托對象  255
         15.4  賦值委托   257
         15.5  組閤委托   257
         15.6  為委托增加方法  258
         15.7  從委托移除方法   259
         15.8  調用委托  259
         15.9  委托的示例  260
         15.10  調用帶返迴值的委托   261
         15.11  調用帶引用參數的委托   262
         15.12  匿名方法  262
         15.12.1  使用匿名方法   263
         15.12.2  匿名方法的語法  263
         15.12.3  變量和參數的作用域   265
         15.13  Lambda 錶達式   266
         第16 章  事件  269
         16.1  事件和委托相似   269
         16.2  源代碼組件概覽    270
         16.3  聲明事件  271
         16.3.1  事件是成員   271
         16.3.2  委托類型和EventHandler    272
         16.4  觸發事件   272
         16.5  訂閱事件   273
         16.6  標準事件的用法   275
         16.6.1  使用EventArgs 類   275
         16.6.2  通過擴展EventArgs 來傳遞數據   276
         16.6.3  使用自定義委托   276
         16.7  MyTimerClass 代碼    278
         16.8  事件訪問器   279
         第17 章  接口    280
         17.1  什麼是接口   280
         17.2  聲明接口  283
         17.3  實現接口  284
         17.4  接口是引用類型   285
         17.5  接口和as 運算符    287
         17.6  實現多個接口  287
         17.7  實現具有重復成員的接口   288
         17.8  多個接口的引用    289
         17.9  派生成員作為實現    291
         17.10  顯式接口成員實現    291
         17.11  接口可以繼承接口    294
         第18 章  轉換  297
         18.1  什麼是轉換   297
         18.2  隱式轉換  298
         18.3  顯式轉換和強製轉換   299
         18.4  轉換的類型  300
         18.5  數字的轉換  301
         18.5.1  隱式數字轉換   301
         18.5.2  溢齣檢測上下文   302
         18.5.3  顯式數字轉換   303
         18.6  引用轉換  306
         18.6.1  隱式引用轉換   307
         18.6.2  顯式引用轉換   308
         18.6.3  有效顯式引用轉換   308
         18.7  裝箱轉換  309
         18.8  拆箱轉換  311
         18.9  用戶自定義轉換    312
         18.9.1  用戶自定義轉換的約束   312
         18.9.2  用戶自定義轉換的示例   313
         18.9.3  計算用戶自定義轉換   314
         18.9.4  多步用戶自定義轉換的示例  315
         18.10  is 運算符  316
         18.11  as 運算符  317
         第19 章  泛型  318
         19.1  什麼是泛型  318
         19.2  C#中的泛型  320
         19.3  泛型類  321
         19.4  聲明泛型類  321
         19.5  創建構造類型  322
         19.6  創建變量和實例   323
         19.6.1  使用泛型的棧的示例   324
         19.6.2  比較泛型和非泛型棧   325
         19.7  類型參數的約束   326
         19.7.1   Where 子句  327
         19.7.2  約束類型和次序   327
         19.8  泛型方法  328
         19.8.1  聲明泛型方法   328
         19.8.2  調用泛型方法   329
         19.8.3  泛型方法的示例   330
         19.9  擴展方法和泛型類   331
         19.10  泛型結構  332
         19.11  泛型委托  332
         19.12  泛型接口  334
         19.12.1  使用泛型接口的示例   335
         19.12.2  泛型接口的實現必須唯一   336
         19.13  泛型的協變和逆變   337
         19.13.1  接口的協變和逆變   341
         19.13.2  有關變化的更多內容   342
         第20 章  枚舉數和迭代器   344
         20.1  枚舉數和可枚舉類型   344
         20.1.1  使用foreach 語句   344
         20.1.2  枚舉數類型  345
         20.2  使用IEnumerator 接口   346
         20.3  IEnumerable 接口   349
         20.4  不實現接口的枚舉數   351
         20.5  泛型枚舉接口  352
         20.6  IEnumerator<T>接口   352
         20.7  IEnumerable<T>接口  354
         20.8  迭代器   355
         20.8.1  迭代器塊  356
         20.8.2  使用迭代器來創建枚舉數   357
         20.8.3  使用迭代器來創建可枚舉類型  358
         20.9  常見迭代器模式    360
         20.10  産生可枚舉類型和枚舉數   360
         20.11  産生多個可枚舉類型   361
         20.12  産生多個枚舉數   362
         20.13  迭代器實質  363
         第21 章  介紹LINQ  365
         21.1  什麼是LINQ   365
         21.2  LINQ 提供程序   366
         21.3  查詢語法和方法語法   368
         21.4  查詢變量   369
         21.5  查詢錶達式的結構   370
         21.5.1  from 子句    371
         21.5.2  join 子句    372
         21.5.3  什麼是聯結    373
         21.5.4  查詢主體中的fromletwhere 片段    375
         21.5.5  orderby 子句   378
         21.5.6  select…group 子句   378
         21.5.7  查詢中的匿名類型   380
         21.58  group 子句   380
         21.5.9  查詢延續   382
         21.6  標準查詢運算符   383
         21.6.1  查詢錶達式和標準查詢運算符     384
         21.6.2  標準查詢運算符的簽名   385
         21.6.3  委托作為參數   386
         21.6.4  LINQ 預定義的委托類型   387
         21.6.5  使用委托參數的示例   388
         21.6.6  使用Lambda 錶達式參數的示例     388
         21.7  LINQ to XML  390
         21.7.1  標記語言   390
         21.7.2  XML 基礎   390
         21.7.3  XML 類   391
         21.7.4  使用XML 樹的值   394
         21.7.5  使用XML 屬性   397
         21.7.6  節點的其他類型   400
         21.7.7  使用LINQ to XML 的LINQ 查詢   401
         第22 章  異步編程簡介    404
         22.1  進程、綫程以及異步編程   404
         22.1.1  多綫程處理帶來的問題   405
         22.1.2  多綫程處理的復雜度   405
         22.2  並行循環  406
         22.3  BackgroundWorker 類   408
         22.3.1  BackgroundWorker 類的示例代碼    411
         22.3.2  BackgroundWorker 用於WPF 程序的例子   414
         22.4  異步編程模式  416
         22.5  BeginInvoke 和EndInvoke   417
         22.5.1  等待—直到結束模式   418
         22.5.2  AsyncResult 類   419
         22.5.3  輪詢模式    420
         22.5.4  迴調模式   421
         22.6  計時器   423
         第23 章  預處理指令  426
         23.1  什麼是預處理指令   426
         23.2  基本規則   426
         23.3  #define 和#undef 指令   427
         23.4  條件編譯   428
         23.5  條件編譯結構  429
         23.6  診斷指令  431
         23.7  行號指令  431
         23.8  區域指令  432
         23.9  #pragma warning 指令   433
         第24 章  反射和特性  434
         24.1  元數據和反射  434
         24.2  Type 類  435
         24.3  獲取Type 對象    436
         24.4  什麼是特性  438
         24.5  應用特性  439
         24.6  預定義的保留的特性   439
         24.6.1  Obsolete 特性   439
         24.6.2  Conditional 特性   440
         24.6.3  預定義的特性   441
         24.7  有關應用特性的更多內容   442
         24.7.1  多個特性   442
         24.7.2  其他類型的目標   442
         24.7.3  全局特性   443
         24.8  自定義特性  443
         24.8.1  聲明自定義特性   444
         24.8.2  使用特性的構造函數   444
         24.8.3  指定構造函數   444
         24.8.4  使用構造函數   445
         24.8.5  構造函數中的位置參數和命名參數   445
         24.8.6  限製特性的使用   446
         24.8.7  自定義特性的最佳實踐   447
         24.9  訪問特性   448
         24.9.1  使用IsDefined 方法   448
         24.9.2  使用GetCustomAttribute方法  449
         第25 章  其他主題  450
         25.1  概述  450
         25.2  字符串  450
         25.2.1  使用StringBuilder 類   451
         25.2.2  格式化數字字符串   452
         25.3   把字符串解析為數據值   455
         25.4   關於可空類型的更多內容   457
         25.4.1   使用空接閤運算符  458
         25.4.2   使用可空用戶自定義類型  459
         25.5   Main 方法  460
         25.6   文檔注釋  461
         25.6.1   插入文檔注釋   462
         25.6.2   使用其他XML 標簽   463
         25.7  嵌套類型  463
         25.7.1  嵌套類的示例   464
         25.7.2  可見性和嵌套類型   465
         25.8  和COM 的互操作   467
      · · · · · ·     (
收起)