注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計程序設(shè)計綜合深入理解C#(第3版)

深入理解C#(第3版)

深入理解C#(第3版)

定 價:¥99.00

作 者: (英)Jon Skeet 著,姚琪琳 譯
出版社: 人民郵電出版社
叢編項:
標(biāo) 簽: 編程語言與程序設(shè)計 計算機與互聯(lián)網(wǎng)

ISBN: 9787115346421 出版時間: 2014-04-01 包裝: 平裝
開本: 16開 頁數(shù): 490 字?jǐn)?shù):  

內(nèi)容簡介

  《深入理解C#(第3版)》是C#領(lǐng)域不可多得的經(jīng)典著作。作者在詳盡地展示C#各個知識點的同時,更注重從現(xiàn)象中挖掘本質(zhì)?!渡钊肜斫釩#(第3版)》深入探索了C#的核心概念和經(jīng)典特性,并將這些特性融入到代碼中,讓讀者能夠真正領(lǐng)會到C#之“深入”與“精妙”。在第2版的基礎(chǔ)上,《深入理解C#(第3版)》新增了C# 5的新特性——異步,并更新了隨著技術(shù)的發(fā)展,已經(jīng)不再適用的內(nèi)容,確保整本書能達到讀者期望的高標(biāo)準(zhǔn)。如果你略微了解一點C#,就可無障礙地閱讀《深入理解C#(第3版)》。

作者簡介

  Jon Skeet,谷歌軟件工程師,微軟資深C# MVP,擁有10余年C#項目開發(fā)經(jīng)驗。自2002年以來,他一直是C#社區(qū)、新聞組、國際會議和Stack Overflow網(wǎng)站上非?;钴S的技術(shù)專家,回答了數(shù)以萬計的C#和.NET相關(guān)問題。

圖書目錄

第一部分 基礎(chǔ)知識
第1章 C#開發(fā)的進化史 2
1.1 從簡單的數(shù)據(jù)類型開始 3
1.1.1 C# 1中定義的產(chǎn)品類型 3
1.1.2 C# 2中的強類型集合 4
1.1.3 C# 3中自動實現(xiàn)的屬性 5
1.1.4 C# 4中的命名實參 6
1.2 排序和過濾 7
1.2.1 按名稱對產(chǎn)品進行排序 7
1.2.2 查詢集合 10
1.3 處理未知數(shù)據(jù) 12
1.3.1 表示未知的價格 12
1.3.2 可選參數(shù)和默認(rèn)值 13
1.4 LINQ簡介 14
1.4.1 查詢表達式和進程內(nèi)查詢 14
1.4.2 查詢XML 15
1.4.3 LINQ to SQL 16
1.5 COM和動態(tài)類型 17
1.5.1 簡化COM互操作 17
1.5.2 與動態(tài)語言互操作 18
1.6 輕松編寫異步代碼 19
1.7 剖析.NET平臺 20
1.7.1 C#語言 20
1.7.2 運行時 21
1.7.3 框架庫 21
1.8 怎樣寫出超炫的代碼 22
1.8.1 采用代碼段形式的全能代碼 22
1.8.2 教學(xué)代碼不是產(chǎn)品代碼 23
1.8.3 你的新朋友:語言規(guī)范 23
1.9 小結(jié) 24
第2章 C# 1所搭建的核心基礎(chǔ) 25
2.1 委托 25
2.1.1 簡單委托的構(gòu)成 26
2.1.2 合并和刪除委托 30
2.1.3 對事件的簡單討論 32
2.1.4 委托總結(jié) 33
2.2 類型系統(tǒng)的特征 33
2.2.1 C#在類型系統(tǒng)世界中的位置 34
2.2.2 C# 1的類型系統(tǒng)何時不夠用 36
2.2.3 類型系統(tǒng)特征總結(jié) 39
2.3 值類型和引用類型 39
2.3.1 現(xiàn)實世界中的值和引用 39
2.3.2 值類型和引用類型基礎(chǔ)知識 40
2.3.3 走出誤區(qū) 41
2.3.4 裝箱和拆箱 43
2.3.5 值類型和引用類型小結(jié) 44
2.4 C# 1之外:構(gòu)建于堅實基礎(chǔ)之上的新特性 44
2.4.1 與委托有關(guān)的特性 44
2.4.2 與類型系統(tǒng)有關(guān)的特性 46
2.4.3 與值類型有關(guān)的特性 48
2.5 小結(jié) 49
第二部分 C# 2:解決C# 1的問題
第3章 用泛型實現(xiàn)參數(shù)化類型 52
3.1 為什么需要泛型 53
3.2 日常使用的簡單泛型 54
3.2.1 通過例子來學(xué)習(xí):泛型字典 54
3.2.2 泛型類型和類型參數(shù) 56
3.2.3 泛型方法和判讀泛型聲明 59
3.3 深化與提高 62
3.3.1 類型約束 62
3.3.2 泛型方法類型實參的類型推斷 67
3.3.3 實現(xiàn)泛型 68
3.4 高級泛型 73
3.4.1 靜態(tài)字段和靜態(tài)構(gòu)造函數(shù) 73
3.4.2 JIT編譯器如何處理泛型 75
3.4.3 泛型迭代 77
3.4.4 反射和泛型 79
3.5 泛型在C#和其他語言中的限制 82
3.5.1 泛型可變性的缺乏 83
3.5.2 缺乏操作符約束或者“數(shù)值”約束 87
3.5.3 缺乏泛型屬性、索引器和其他成員類型 88
3.5.4 同C++模板的對比 89
3.5.5 和Java泛型的對比 90
3.6 小結(jié) 91
第4章 可空類型 93
4.1 沒有值時怎么辦 93
4.1.1 為什么值類型的變量不能是null 94
4.1.2 在C# 1中表示空值的模式 94
4.2 System.Nullable和System.Nullable 96
4.2.1 Nullable簡介 96
4.2.2 Nullable裝箱和拆箱 99
4.2.3 Nullable實例的相等性 100
4.2.4 來自非泛型Nullable類的支持 101
4.3 C# 2為可空類型提供的語法糖 101
4.3.1 ?修飾符 102
4.3.2 使用null進行賦值和比較 103
4.3.3 可空轉(zhuǎn)換和操作符 105
4.3.4 可空邏輯 108
4.3.5 對可空類型使用as操作符 109
4.3.6 空合并操作符 110
4.4 可空類型的新奇用法 112
4.4.1 嘗試一個不使用輸出參數(shù)的操作 113
4.4.2 空合并操作符讓比較不再痛苦 115
4.5 小結(jié) 117
第5章 進入快速通道的委托 118
5.1 向笨拙的委托語法說拜拜 119
5.2 方法組轉(zhuǎn)換 120
5.3 協(xié)變性和逆變性 122
5.3.1 委托參數(shù)的逆變性 122
5.3.2 委托返回類型的協(xié)變性 123
5.3.3 不兼容的風(fēng)險 124
5.4 使用匿名方法的內(nèi)聯(lián)委托操作 125
5.4.1 從簡單的開始:處理一個參數(shù) 126
5.4.2 匿名方法的返回值 128
5.4.3 忽略委托參數(shù) 129
5.5 匿名方法中的捕獲變量 131
5.5.1 定義閉包和不同類型的變量 131
5.5.2 捕獲變量的行為 132
5.5.3 捕獲變量到底有什么用處 133
5.5.4 捕獲變量的延長生存期 134
5.5.5 局部變量實例化 135
5.5.6 共享和非共享的變量混合使用 137
5.5.7 捕獲變量的使用規(guī)則和小結(jié) 139
5.6 小結(jié) 140
第6章 實現(xiàn)迭代器的捷徑 141
6.1 C# 1:手寫迭代器的痛苦 142
6.2 C# 2:利用yield語句簡化迭代器 144
6.2.1 迭代器塊和yield return簡介 145
6.2.2 觀察迭代器的工作流程 146
6.2.3 進一步了解迭代器執(zhí)行流程 148
6.2.4 具體實現(xiàn)中的奇特之處 151
6.3 真實的迭代器示例 152
6.3.1 迭代時刻表中的日期 152
6.3.2 迭代文件中的行 153
6.3.3 使用迭代器塊和謂詞對項進行延遲過濾 156
6.4 使用CCR實現(xiàn)偽同步代碼 157
6.5 小結(jié) 160
第7章 結(jié)束C# 2的講解:最后的一些特性 161
7.1 分部類型 162
7.1.1 在多個文件中創(chuàng)建一個類型 162
7.1.2 分部類型的使用 164
7.1.3 C# 3獨有的分部方法 166
7.2 靜態(tài)類型 167
7.3 獨立的取值方法/賦值方法屬性訪問器 169
7.4 命名空間別名 170
7.4.1 限定的命名空間別名 171
7.4.2 全局命名空間別名 172
7.4.3 外部別名 173
7.5 pragma指令 174
7.5.1 警告pragma 174
7.5.2 校驗和pragma 175
7.6 非安全代碼中固定大小的緩沖區(qū) 176
7.7 把內(nèi)部成員暴露給選定的程序集 178
7.7.1 簡單情況下的友元程序集 178
7.7.2 為什么使用Internals-VisibleTo 179
7.7.3 InternalsVisibleTo和簽名程序集 179
7.8 小結(jié) 180
第三部分 C# 3:革新寫代碼的方式
第8章 用智能的編譯器來防錯 182
8.1 自動實現(xiàn)的屬性 183
8.2 隱式類型的局部變量 185
8.2.1 用var聲明局部變量 185
8.2.2 隱式類型的限制 187
8.2.3 隱式類型的優(yōu)缺點 188
8.2.4 建議 189
8.3 簡化的初始化 190
8.3.1 定義示例類型 190
8.3.2 設(shè)置簡單屬性 191
8.3.3 為嵌入對象設(shè)置屬性 192
8.3.4 集合初始化程序 193
8.3.5 初始化特性的應(yīng)用 196
8.4 隱式類型的數(shù)組 197
8.5 匿名類型 198
8.5.1 第一次邂逅匿名類型 198
8.5.2 匿名類型的成員 200
8.5.3 投影初始化程序 201
8.5.4 重點何在 202
8.6 小結(jié) 203
第9章 Lambda表達式和表達式樹 204
9.1 作為委托的Lambda表達式 205
9.1.1 準(zhǔn)備工作:Func委托類型簡介 205
9.1.2 第一次轉(zhuǎn)換成Lambda表達式 206
9.1.3 用單一表達式作為主體 207
9.1.4 隱式類型的參數(shù)列表 207
9.1.5 單一參數(shù)的快捷語法 208
9.2 使用List和事件的簡單例子 209
9.2.1 列表的過濾、排序和操作 210
9.2.2 在事件處理程序中進行記錄 211
9.3 表達式樹 212
9.3.1 以編程方式構(gòu)建表達式樹 213
9.3.2 將表達式樹編譯成委托 214
9.3.3 將C# Lambda表達式轉(zhuǎn)換成表達式樹 215
9.3.4 位于LINQ核心的表達式樹 218
9.3.5 LINQ之外的表達式樹 220
9.4 類型推斷和重載決策的改變 221
9.4.1 改變的起因:精簡泛型方法調(diào)用 221
9.4.2 推斷匿名函數(shù)的返回類型 222
9.4.3 分兩個階段進行的類型推斷 223
9.4.4 選擇正確的被重載的方法 227
9.4.5 類型推斷和重載決策 229
9.5 小結(jié) 229
第10章 擴展方法 230
10.1 未引入擴展方法之前的狀態(tài) 231
10.2 擴展方法的語法 233
10.2.1 聲明擴展方法 233
10.2.2 調(diào)用擴展方法 234
10.2.3 擴展方法是怎樣被發(fā)現(xiàn)的 235
10.2.4 在空引用上調(diào)用方法 236
10.3?。甆ET 3.5中的擴展方法 238
10.3.1 從Enumerable開始起步 238
10.3.2 用Where過濾并將方法調(diào)用鏈接到一起 240
10.3.3 插曲:似曾相識的Where方法 241
10.3.4 用Select方法和匿名類型進行投影 242
10.3.5 用OrderBy方法進行排序 243
10.3.6 涉及鏈接的實際例子 244
10.4 使用思路和原則 245
10.4.1 “擴展世界”和使接口更豐富 246
10.4.2 流暢接口 246
10.4.3 理智使用擴展方法 248
10.5 小結(jié) 249
第11章 查詢表達式和LINQ to Objects 250
11.1 LINQ介紹 251
11.1.1 LINQ中的基礎(chǔ)概念 251
11.1.2 定義示例數(shù)據(jù)模型 255
11.2 簡單的開始:選擇元素 256
11.2.1 以數(shù)據(jù)源作為開始,以選擇作為結(jié)束 257
11.2.2 編譯器轉(zhuǎn)譯是查詢表達式基礎(chǔ)的轉(zhuǎn)譯 257
11.2.3 范圍變量和重要的投影 260
11.2.4 Cast、OfType和顯式類型的范圍變量 262
11.3 對序列進行過濾和排序 264
11.3.1 使用where子句進行過濾 264
11.3.2 退化的查詢表達式 265
11.3.3 使用orderby子句進行排序 265
11.4 let子句和透明標(biāo)識符 267
11.4.1 用let來進行中間計算 267
11.4.2 透明標(biāo)識符 268
11.5 連接 270
11.5.1 使用join子句的內(nèi)連接 270
11.5.2 使用join...into子句進行分組連接 274
11.5.3 使用多個from子句進行交叉連接和合并序列 276
11.6 分組和延續(xù) 279
11.6.1 使用group...by子句進行分組 279
11.6.2 查詢延續(xù) 282
11.7 在查詢表達式和點標(biāo)記之間作出選擇 285
11.7.1 需要使用點標(biāo)記的操作 285
11.7.2 使用點標(biāo)記可能會更簡單的查詢表達式 286
11.7.3 選擇查詢表達式 286
11.8 小結(jié) 287
第12章 超越集合的LINQ 289
12.1 使用LINQ to SQL查詢數(shù)據(jù)庫 290
12.1.1 數(shù)據(jù)庫和模型 290
12.1.2 用查詢表達式訪問數(shù)據(jù)庫 292
12.1.3 包含連接的查詢 294
12.2 用IQueryable和IQueryProvider進行轉(zhuǎn)換 296
12.2.1 IQueryable和相關(guān)接口的介紹 297
12.2.2 模擬接口實現(xiàn)來記錄調(diào)用 298
12.2.3 把表達式粘合在一起:Queryable的擴展方法 300
12.2.4 模擬實際運行的查詢提供器 302
12.2.5 包裝IQueryable 303
12.3 LINQ友好的API和LINQ to XML 303
12.3.1 LINQ to XML中的核心類型 304
12.3.2 聲明式構(gòu)造 305
12.3.3 查詢單個節(jié)點 308
12.3.4 合并查詢操作符 309
12.3.5 與LINQ和諧共處 310
12.4 用并行LINQ代替LINQ to Objects 311
12.4.1 在單線程中繪制曼德博羅特集 311
12.4.2 ParallelEnumerable、ParallelQuery和AsParallel 313
12.4.3 調(diào)整并行查詢 315
12.5 使用LINQ to Rx反轉(zhuǎn)查詢模型 316
12.5.1 IObservable和IObserver 316
12.5.2 簡單的開始 318
12.5.3 查詢可觀察對象 319
12.5.4 意義何在 321
12.6 擴展LINQ to Objects 321
12.6.1 設(shè)計和實現(xiàn)指南 322
12.6.2 示例擴展:選擇隨機元素 323
12.7 小結(jié) 324
第四部分 C# 4:良好的交互性
第13章 簡化代碼的微小修改 328
13.1 可選參數(shù)和命名實參 328
13.1.1 可選參數(shù) 329
13.1.2 命名實參 334
13.1.3 兩者相結(jié)合 337
13.2 改善COM互操作性 341
13.2.1 在C# 4之前操縱Word是十分恐怖的 342
13.2.2 可選參數(shù)和命名實參的復(fù)仇 342
13.2.3 按值傳遞ref參數(shù) 343
13.2.4 調(diào)用命名索引器 344
13.2.5 鏈接主互操作程序集 345
13.3 接口和委托的泛型可變性 348
13.3.1 可變性的種類:協(xié)變性和逆變性 348
13.3.2 在接口中使用可變性 349
13.3.3 在委托中使用可變性 352
13.3.4 復(fù)雜情況 353
13.3.5 限制和說明 354
13.4 對鎖和字段風(fēng)格的事件的微小改變 357
13.4.1 健壯的鎖 357
13.4.2 字段風(fēng)格的事件 358
13.5 小結(jié) 359
第14章 靜態(tài)語言中的動態(tài)綁定 360
14.1 何謂、何時、為何、如何 361
14.1.1 何謂動態(tài)類型 361
14.1.2 動態(tài)類型什么時候有用,為什么 362
14.1.3 C# 4如何提供動態(tài)類型 363
14.2 關(guān)于動態(tài)的快速指南 364
14.3 動態(tài)類型示例 366
14.3.1 COM和Office 367
14.3.2 動態(tài)語言 368
14.3.3 純托管代碼中的動態(tài)類型 372
14.4 幕后原理 377
14.4.1 DLR簡介 378
14.4.2 DLR核心概念 379
14.4.3 C#編譯器如何處理動態(tài) 382
14.4.4 更加智能的C#編譯器 385
14.4.5 動態(tài)代碼的約束 388
14.5 實現(xiàn)動態(tài)行為 390
14.5.1 使用ExpandoObject 391
14.5.2 使用DynamicObject 394
14.5.3 實現(xiàn)IDynamicMetaObject-Provider 400
14.6 小結(jié) 404
第五部分 C# 5:簡化的異步編程
第15章 使用async/await進行異步編程 406
15.1 異步函數(shù)簡介 407
15.1.1 初識異步類型 408
15.1.2 分解第一個示例 409
15.2 思考異步編程 410
15.2.1 異步執(zhí)行的基礎(chǔ) 410
15.2.2 異步方法 412
15.3 語法和語義 413
15.3.1 聲明異步方法 413
15.3.2 異步方法的返回類型 414
15.3.3 可等待模式 415
15.3.4 await表達式的流 418
15.3.5 從異步方法返回 421
15.3.6 異常 422
15.4 異步匿名函數(shù) 429
15.5 實現(xiàn)細(xì)節(jié):編譯器轉(zhuǎn)換 431
15.5.1 生成的代碼 432
15.5.2 骨架方法的結(jié)構(gòu) 434
15.5.3 狀態(tài)機的結(jié)構(gòu) 435
15.5.4 一個入口搞定一切 436
15.5.5 圍繞await表達式的控制 438
15.5.6 跟蹤?!?39
15.5.7 更多內(nèi)容 440
15.6 高效地使用async/await 441
15.6.1 基于任務(wù)的異步模式 441
15.6.2 組合異步操作 444
15.6.3 對異步代碼編寫單元測試 447
15.6.4 可等待模式的歸來 450
15.6.5 在WinRT中執(zhí)行異步操作 451
15.7 小結(jié) 452
第16章 C# 5附加特性和結(jié)束語 453
16.1 foreach循環(huán)中捕獲變量的變化 453
16.2 調(diào)用者信息特性 454
16.2.1 基本行為 454
16.2.2 日志 456
16.2.3 實現(xiàn)INotifyProperty-Changed 456
16.2.4 在非.NET 4.5環(huán)境下使用調(diào)用者信息特性 457
16.3 結(jié)束語 458
附錄A LINQ標(biāo)準(zhǔn)查詢操作符 460
附錄B?。甆ET中的泛型集合 471
附錄C 版本總結(jié) 483

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號