[www.ed2k.online]下載基地為您提供軟件、遊戲、圖書、教育等各種資源的ED2K電驢共享下載和MAGNET磁力鏈接下載。
設為首頁
加入收藏
首頁 圖書資源 軟件資源 游戲資源 教育資源 其他資源
 電驢下載基地 >> 图书资源 >> 計算機與網絡 >> 《深入理解C#(第2版)》掃描版[PDF]
《深入理解C#(第2版)》掃描版[PDF]
下載分級 图书资源
資源類別 計算機與網絡
發布時間 2017/7/10
大       小 -
《深入理解C#(第2版)》掃描版[PDF] 簡介: 中文名 : 深入理解C#(第2版) 作者 : [英]Jon Skeet 譯者 : 周靖 等 圖書分類 : 軟件 資源格式 : PDF 版本 : 掃描版 出版社 : 人民郵電出版社 書號 : 9787115269249 發行時間 : 2012年1月1日 地區 : 大陸 語言 : 簡體中文 簡介 : 內容簡介:
電驢資源下載/磁力鏈接資源下載:
全選
"《深入理解C#(第2版)》掃描版[PDF]"介紹
中文名: 深入理解C#(第2版)
作者: [英]Jon Skeet
譯者: 周靖 等
圖書分類: 軟件
資源格式: PDF
版本: 掃描版
出版社: 人民郵電出版社
書號: 9787115269249
發行時間: 2012年1月1日
地區: 大陸
語言: 簡體中文
簡介:



內容簡介:
《深入理解C#(第2版)》是C#領域不可多得的經典著作。作者在詳盡地展示C#各個知識點的同時,更注重從現象中挖掘本質。本書深入探索了C#的核心概念和經典特性,並將這些特性融入到代碼中,讓讀者能夠真正領會到C#之“深入”與“精妙”。在第1版的基礎上,書中新增了C# 4的新特性,如動態類型、命名實參和可選參數等,這些特性將C#語言提升到了一個新的層次。  
《深入理解C#(第2版)》適合中高級.NET開發人員閱讀。
資源來自網絡,如侵犯了您的權利,請點擊,謝謝!
白盤用戶可在(網盤分流地址):本頁“用戶評論”處1樓找下載鏈接。
內容截圖:


目錄:


第一部分 基礎知識
第1章 C#開發的進化史 2
1.1 從簡單的數據類型開始 3
1.1.1 C# 1中定義的產品類型 3
1.1.2 C# 2中的強類型集合 4
1.1.3 C# 3中自動實現的屬性 5
1.1.4 C# 4中的命名實參 6
1.2 排序和過濾 7
1.2.1 按名稱對產品進行排序 7
1.2.2 查詢集合 10
1.3 處理未知數據 11
1.3.1 表示未知的價格 12
1.3.2 可選參數和默認值 12
1.4 LINQ簡介 13
1.4.1 查詢表達式和進程內查詢 13
1.4.2 查詢XML 14
1.4.3 LINQ to SQL 15
1.5 COM和動態類型 16
1.5.1 簡化COM互操作 16
1.5.2 與動態語言互操作 17
1.6 剖析.NET平台 18
1.6.1 C#語言 18
1.6.2 運行時 19
1.6.3 框架庫 19
1.7 怎樣寫出超炫的代碼 19
1.7.1 采用代碼段形式的全能代碼 20
1.7.2 教學代碼不是產品代碼 21
1.7.3 你的新朋友:語言規范 21
1.8 小結 21
第2章 C# 1所搭建的核心基礎 23
2.1 委托 23
2.1.1 簡單委托的構成 24
2.1.2 合並和刪除委托 28
2.1.3 對事件的簡單討論 29
2.1.4 委托小結 30
2.2 類型系統的特征 31
2.2.1 C#在類型系統世界中的位置 31
2.2.2 C# 1的類型系統在什麼時候不夠用 34
2.2.3 類型系統特征總結 36
2.3 值類型和引用類型 36
2.3.1 現實世界中的值和引用 36
2.3.2 值類型和引用類型基礎知識 37
2.3.3 走出誤區 38
2.3.4 裝箱和拆箱 40
2.3.5 值類型和引用類型小結 41
2.4 C# 1之外:構建於堅實基礎之上的新特性 41
2.4.1 與委托有關的特性 41
2.4.2 與類型系統有關的特性 43
2.4.3 與值類型有關的特性 45
2.5 小結 46
第二部分 C# 2:解決C# 1的問題
第3章 用泛型實現參數化類型 48
3.1 為什麼需要泛型 49
3.2 日常使用的簡單泛型 50
3.2.1 通過例子來學習:泛型字典 50
3.2.2 泛型類型和類型參數 52
3.2.3 泛型方法和判讀泛型聲明 55
3.3 深化與提高 58
3.3.1 類型約束 58
3.3.2 泛型方法類型實參的類型推斷 62
3.3.3 實現泛型 63
3.4 高級泛型 68
3.4.1 靜態字段和靜態構造函數 69
3.4.2 JIT編譯器如何處理泛型 70
3.4.3 泛型迭代 72
3.4.4 反射和泛型 74
3.5 泛型在C#和其他語言中的限制 78
3.5.1 泛型可變性的缺乏 78
3.5.2 缺乏操作符約束或者“數值”約束 82
3.5.3 缺乏泛型屬性、索引器和其他成員類型 83
3.5.4 同C++模板的對比 84
3.5.5 和Java泛型的對比 85
3.6 小結 86
第4章 可空類型 88
4.1 沒有值時怎麼辦 88
4.1.1 為什麼值類型的變量不能是null 89
4.1.2 在C# 1中表示空值的模式 89
4.2 System.Nullable和System.Nullable 91
4.2.1 Nullable簡介 91
4.2.2 Nullable裝箱和拆箱 94
4.2.3 Nullable實例的相等性 95
4.2.4 來自非泛型Nullable類的支持 96
4.3 C# 2為可空類型提供的語法糖 96
4.3.1 ?修飾符 97
4.3.2 使用null 進行賦值和比較 98
4.3.3 可空轉換和操作符 99
4.3.4 可空邏輯 102
4.3.5 對可空類型使用as操作符 103
4.3.6 空合並操作符 104
4.4 可空類型的新奇用法 106
4.4.1 嘗試一個不使用輸出參數的操作 107
4.4.2 空合並操作符讓比較不再痛苦 108
4.5 小結 111
第5章 進入快速通道的委托 112
5.1 向笨拙的委托語法說拜拜 113
5.2 方法組轉換 114
5.3 協變性和逆變性 115
5.3.1 委托參數的逆變性 116
5.3.2 委托返回類型的協變性 117
5.3.3 不兼容的風險 118
5.4 使用匿名方法的內聯委托操作 119
5.4.1 從簡單的開始:處理一個參數 119
5.4.2 匿名方法的返回值 121
5.4.3 忽略委托參數 123
5.5 在匿名方法中捕捉變量 124
5.5.1 定義閉包和不同的變量類型 124
5.5.2 測試被捕獲的變量的行為 126
5.5.3 捕獲變量到底有什麼用處 127
5.5.4 捕獲變量的延長生存期 127
5.5.5 局部變量實例化 128
5.5.6 共享和非共享的變量混合使用 130
5.5.7 捕獲變量的使用規則和小結 132
5.6 小結 133
第6章 實現迭代器的捷徑 134
6.1 C# 1:手寫迭代器的痛苦 135
6.2 C# 2:利用yield語句簡化迭代器 137
6.2.1 迭代器塊和yield return簡介 137
6.2.2 觀察迭代器的工作流程 139
6.2.3 進一步了解迭代器執行流程 141
6.2.4 具體實現中的奇特之處 144
6.3 真實的例子:迭代范圍值 145
6.3.1 迭代時刻表中的日期 145
6.3.2 迭代文件中的行 146
6.3.3 使用迭代器塊和謂詞對項進行延遲篩選 148
6.4 使用CCR實現偽同步代碼 150
6.5 小結 152
第7章 結束C# 2的講解:最後的一些特性 153
7.1 分部類型 154
7.1.1 在多個文件中創建一個類型 154
7.1.2 分部類型的使用 156
7.1.3 C# 3獨有的分部方法 157
7.2 靜態類型 159
7.3 獨立的取值方法/賦值方法屬性訪問器 161
7.4 命名空間別名 162
7.4.1 限定的命名空間別名 163
7.4.2 全局命名空間別名 164
7.4.3 外部別名 164
7.5 Pragma指令 166
7.5.1 警告pragma 166
7.5.2 校驗和pragma 167
7.6 非安全代碼中的固定大小的緩沖區 167
7.7 把內部成員暴露給選定的程序集 169
7.7.1 在簡單情況下的友元程序集 169
7.7.2 為什麼使用InternalsVisibleTo 170
7.7.3 InternalsVisibleTo和簽名程序集 170
7.8 小結 171
第三部分 C# 3:革新寫代碼的方式
第8章 用智能的編譯器來防錯 174
8.1 自動實現的屬性 175
8.2 隱式類型的局部變量 176
8.2.1 用var聲明局部變量 177
8.2.2 隱式類型的限制 178
8.2.3 隱式類型的優缺點 179
8.2.4 建議 180
8.3 簡化的初始化 180
8.3.1 定義示例類型 181
8.3.2 設置簡單屬性 182
8.3.3 為嵌入對象設置屬性 183
8.3.4 集合初始化列表 184
8.3.5 初始化特性的應用 186
8.4 隱式類型的數組 187
8.5 匿名類型 188
8.5.1 第一次邂逅匿名類型 188
8.5.2 匿名類型的成員 190
8.5.3 投影初始化列表 191
8.5.4 重點何在 192
8.6 小結 193
第9章 Lambda表達式和表達式樹 194
9.1 作為委托的Lambda表達式 195
9.1.1 准備工作:Func委托類型簡介 195
9.1.2 第一次轉換成Lambda表達式 196
9.1.3 用單一表達式作為主體 197
9.1.4 隱式類型的參數列表 197
9.1.5 單一參數的快捷語法 198
9.2 使用List和事件的簡單例子 199
9.2.1 對列表進行篩選、排序並設置其他操作 199
9.2.2 在事件處理程序中進行記錄 201
9.3 表達式樹 202
9.3.1 在程序中構建表達式樹 202
9.3.2 將表達式樹編譯成委托 204
9.3.3 將C# Lambda表達式轉換成表達式樹 205
9.3.4 位於LINQ核心的表達式樹 208
9.3.5 LINQ之外的表達式樹 209
9.4 類型推斷和重載決策發生的改變 211
9.4.1 改變的起因:精簡泛型方法調用 211
9.4.2 推斷匿名函數的返回類型 212
9.4.3 分兩個階段進行的類型推斷 213
9.4.4 選擇正確的被重載的方法 217
9.4.5 類型推斷和重載決策 218
9.5 小結 219
第10章 擴展方法 220
10.1 未引入擴展方法之前的狀態 221
10.2 擴展方法的語法 223
10.2.1 聲明擴展方法 223
10.2.2 調用擴展方法 224
10.2.3 擴展方法是怎樣被發現的 225
10.2.4 在空引用上調用方法 226
10.3 .NET 3.5中的擴展方法 227
10.3.1 從Enumerable開始起步 228
10.3.2 用Where篩選並將方法調用鏈接到一起 229
10.3.3 插曲:似曾相識的Where方法 231
10.3.4 用Select方法和匿名類型進行投影 232
10.3.5 用OrderBy方法進行排序 232
10.3.6 涉及鏈接的實際例子 234
10.4 使用思路和原則 235
10.4.1 “擴展世界”和使接口更豐富 235
10.4.2 流暢接口 236
10.4.3 理智使用擴展方法 237
10.5 小結 238
第11章 查詢表達式和LINQ to Objects 240
11.1 LINQ介紹 241
11.1.1 LINQ中的基礎概念 241
11.1.2 定義示例數據模型 245
11.2 簡單的開始:選擇元素 246
11.2.1 以數據源作為開始,以選擇作為結束 246
11.2.2 作為查詢表達式基礎的編譯器轉換 247
11.2.3 范圍變量和重要的投影 249
11.2.4 Cast、OfType和顯式類型的范圍變量 251
11.3 對序列進行過濾和排序 252
11.3.1 使用where子句進行過濾 253
11.3.2 退化的查詢表達式 253
11.3.3 使用orderby子句進行排序 254
11.4 let子句和透明標識符 256
11.4.1 用let來進行中間計算 256
11.4.2 透明標識符 257
11.5 聯接 258
11.5.1 使用join子句的內聯接 258
11.5.2 使用join into子句進行分組聯接 262
11.5.3 使用多個from子句進行交叉聯接和合並序列 264
11.6 分組和延續 267
11.6.1 使用group by子句進行分組 267
11.6.2 查詢延續 270
11.7 在查詢表達式和點標記之間作出選擇 272
11.7.1 需要使用點標記的操作 273
11.7.2 選擇點標記 273
11.7.3 選擇查詢表達式 274
11.8 小結 275
第12章 超越集合的LINQ 276
12.1 使用LINQ to SQL查詢數據庫 277
12.1.1 數據庫和模型 277
12.1.2 用查詢表達式訪問數據庫 279
12.1.3 包含聯接的查詢 281
12.2 用IQueryable和IQueryProvider進行轉換 283
12.2.1 IQueryable和相關接口的介紹 283
12.2.2 模擬接口實現來記錄調用 285
12.2.3 把表達式粘合在一起:Queryable的擴展方法 287
12.2.4 模擬實際運行的查詢提供器 289
12.2.5 包裝IQueryable 290
12.3 LINQ友好的API和LINQ to XML 290
12.3.1 LINQ to XML中的核心類型 290
12.3.2 聲明式構造 292
12.3.3 查詢單個節點 294
12.3.4 合並查詢操作符 296
12.3.5 與LINQ和諧共處 297
12.4 用並行LINQ代替LINQ to Objects 297
12.4.1 在單線程中繪制曼德博羅特集 297
12.4.2 ParallelEnumerable、Parallel-Query和AsParallel 299
12.4.3 調整並行查詢 300
12.5 使用LINQ to Rx反轉查詢模型 301
12.5.1 IObservable和IObserver 302
12.5.2 簡單地開始 303
12.5.3 查詢可觀察對象 304
12.5.4 意義何在 306
12.6 擴展LINQ to Objects 306
12.6.1 設計和實現指南 307
12.6.2 示例擴展:選擇隨機元素 308
12.7 小結 309
第四部分 C# 4:良好的交互性
第13章 簡化代碼的微小修改 312
13.1 可選參數和命名實參 312
13.1.1 可選參數 313
13.1.2 命名實參 317
13.1.3 兩者相結合 321
13.2 改善COM互操作性 324
13.2.1 在C# 4之前操縱Word是十分恐怖的 325
13.2.2 可選參數和命名實參的復仇 325
13.2.3 按值傳遞ref參數 326
13.2.4 調用命名索引器 327
13.2.5 鏈接主互操作程序集 328
13.3 接口和委托的泛型可變性 330
13.3.1 可變性的種類:協變性和逆變性 331
13.3.2 在接口中使用可變性 332
13.3.3 在委托中使用可變性 334
13.3.4 復雜情況 335
13.3.5 限制和說明 336
13.4 對鎖和字段風格的事件的微小改變 339
13.4.1 健壯的鎖 339
13.4.2 字段風格的事件 340
13.5 小結 341
第14章 靜態語言中的動態綁定 342
14.1 何謂,何時,為何,如何 343
14.1.1 何謂動態類型 343
14.1.2 動態類型什麼時候有用,為什麼 344
14.1.3 C# 4如何提供動態類型 345
14.2 關於動態的快速指南 345
14.3 動態類型示例 348
14.3.1 COM和Office 348
14.3.2 動態語言 350
14.3.3 純托管代碼中的動態類型 353
14.4 幕後原理 358
14.4.1 DLR簡介 358
14.4.2 DLR核心概念 360
14.4.3 C#編譯器如何處理動態 362
14.4.4 更加智能的C#編譯器 365
14.4.5 動態代碼的約束 368
14.5 實現動態行為 370
14.5.1 使用ExpandoObject 370
14.5.2 使用DynamicObject 374
14.5.3 實現IDynamicMetaObject-Provider 380
14.6 小結 383
第15章 使用契約讓代碼更加清晰 385
15.1 未引入代碼契約之前的狀態 386
15.2 代碼契約 387
15.2.1 前置條件 388
15.2.2 後置條件 389
15.2.3 固定條件 390
15.2.4 斷言和假設 392
15.2.5 舊式契約 393
15.3 使用ccrewrite和ccrefgen重寫二進制 394
15.3.1 簡單重寫 394
15.3.2 契約繼承 395
15.3.3 契約引用程序集 398
15.3.4 失敗行為 399
15.4 靜態檢查 401
15.4.1 開始靜態檢查 401
15.4.2 隱式職責 403
15.4.3 有選擇性的檢查 406
15.5 使用ccdocgen 將契約文檔化 408
15.6 契約實戰 410
15.6.1 契約中有什麼 410
15.6.2 如何開始 411
15.6.3 無處不在的選項 412
15.7 小結 414
第16章 何去何從 415
16.1 C#——傳統與現代的結合 415
16.2 計算機科學和.NET 416
16.3 計算機世界 417
16.4 再會 417
附錄A LINQ標准查詢操作符 419
附錄B .NET中的泛型集合 430
附錄C 版本總結 440



相關資源:

免責聲明:本網站內容收集於互聯網,本站不承擔任何由於內容的合法性及健康性所引起的爭議和法律責任。如果侵犯了你的權益,請通知我們,我們會及時刪除相關內容,謝謝合作! 聯系信箱:[email protected]

Copyright © 電驢下載基地 All Rights Reserved